?? database.cpp
字號:
/*
------------------------------------------------------------------
DeleteSQL():delete values from the m_tablename according to the
m_conditions
------------------------------------------------------------------
*/
int DeleteSQL(DatabaseID *m_baseid,char * m_tablename,char *m_condition)
{
SQLRETURN retcode;
if(strlen(m_tablename) <1)
return 1;
retcode = SQLAllocHandle(SQL_HANDLE_STMT, m_baseid->hdbc, &m_baseid->hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
char m_sql[]="delete from ";
char m_sql2[300];
if(strlen(m_condition) >1)
sprintf(m_sql2,"%s %s where %s ",m_sql,m_tablename,m_condition);
else
sprintf(m_sql2,"%s %s ",m_sql,m_tablename);
retcode=SQLPrepare(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode=SQLExecDirect(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode=SQLEndTran(SQL_HANDLE_DBC,m_baseid->hdbc,SQL_COMMIT);
if(retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
printf("commit2 the new record failed!\n");
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
return 0;
}
else
printf("sql delete error\n");
}
else
printf("the sql prepare error\n");
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
}
else
printf("the sql allocate handle error\n");
return 1;
}
int SelectFLDB(DatabaseID *m_baseid,char* m_fields,char* m_tablename,char* in,char* out, char* vm)
{
SQLRETURN retcode;
retcode = SQLAllocHandle(SQL_HANDLE_STMT,m_baseid->hdbc,&m_baseid->hstmt);
if(retcode == SQL_SUCCESS||retcode == SQL_SUCCESS_WITH_INFO)
{
char m_sql[] = "select ";
char m_sql2[100];
memset(m_sql2,'\0',sizeof(m_sql2));
sprintf(m_sql2,"%s* from %s where RKZBH = '%s' and CKZBH = '%s' and CXDMZ = '%s'",m_sql,m_tablename,in,out,vm);
SQLCHAR m_ckzbh[5],m_rkzbh[5],m_cxdmz[2];
SQLINTEGER m_sfjez,m_sfdmz;
SQLINTEGER m_rkzbhlen,m_cxdmzlen,m_sfjezlen,m_sfdmzlen;
char m_bzfl[5];
memset(m_ckzbh,'\0',sizeof(m_rkzbh));
memset(m_cxdmz,'\0',sizeof(m_cxdmz));
retcode=SQLPrepare(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS||retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLExecDirect(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS||retcode == SQL_SUCCESS_WITH_INFO)
{
// retcode=SQLBindCol(m_baseid->hstmt, 1, SQL_C_CHAR, m_qysjz, 20, &m_qysjzlen);
// retcode=SQLBindCol(m_baseid->hstmt, 2, SQL_C_CHAR, m_ckzbh, 20, &m_rkzbhlen);
retcode=SQLBindCol(m_baseid->hstmt, 2, SQL_C_CHAR, m_rkzbh, 5, &m_rkzbhlen);
retcode=SQLBindCol(m_baseid->hstmt, 3, SQL_C_CHAR, m_cxdmz, 2, &m_cxdmzlen);
retcode=SQLBindCol(m_baseid->hstmt, 4, SQL_C_ULONG, &m_sfjez, sizeof(m_sfjez), &m_sfjezlen);
retcode=SQLBindCol(m_baseid->hstmt, 5, SQL_C_ULONG, &m_sfdmz, sizeof(m_sfdmz), &m_sfdmzlen);
}
retcode = SQLFetch(m_baseid->hstmt);
int countf = 1;
while(retcode == SQL_SUCCESS)
{
countf = 0;
sprintf(m_sfbz.rkzbh,"[%s]",(unsigned char*)m_rkzbh);
//m_sfbz.rkzbh[5]='\0';
sprintf(m_sfbz.cxdmz,"%s",(unsigned char*)m_cxdmz);
sprintf(m_bzfl,"%04d",(int)m_sfjez);
// Writekeyprofile(m_filename,m_sfbz.rkzbh,m_sfbz.cxdmz,m_bzfl);
retcode = SQLFetch(m_baseid->hstmt);
//Sleep(100);
}
printf("the record fetched overed\n");
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
//memset(m_condition,0,sizeof(m_condition));
if(countf = 1)
return 0;
else {
countf =1;
return (int)m_sfjez;
}
}
else{
SQLFreeHandle(SQL_HANDLE_STMT,m_baseid->hstmt);
// memset(m_condition,0,sizeof(m_condition));
return 0;
}
}
else
{
printf("SQL allocate handle error\n");
// memset(m_condition,0,sizeof(m_condition));
return 0;
}
return 0;
}
/*
----------------------------------------------------------------
UpdateSQL():update the m_tablename's data use the m_set and
m_condition
----------------------------------------------------------------
*/
int UpdateSQL( DatabaseID *m_baseid,char * m_tablename,char * m_set,char *m_condition)
{
SQLRETURN retcode;
if(strlen(m_tablename) <5 ||strlen(m_set)<3)
return 1;
retcode = SQLAllocHandle(SQL_HANDLE_STMT, m_baseid->hdbc, &m_baseid->hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
char m_sql[]="update ";
char m_sql2[500];
if(strlen(m_condition) >3)
sprintf(m_sql2,"%s %s set %s where %s ",m_sql,m_tablename,m_set,m_condition);
else
sprintf(m_sql2,"%s %s set %s",m_sql,m_tablename,m_set);
retcode=SQLPrepare(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode=SQLExecDirect(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("update ok!\n");
retcode=SQLEndTran(SQL_HANDLE_DBC,m_baseid->hdbc,SQL_COMMIT);
if(retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
printf("commit2 the new record failed!\n");
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
return 0;
}
}
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
}
return 1;
}
/*
------------------------------------------------------------------------
insertSQL():insert the m_values into the m_tablename through the ODBC
------------------------------------------------------------------------
*/
int InsertSQL(DatabaseID *m_baseid,char * m_tablename,char *m_values)
{
SQLRETURN retcode;
if(strlen(m_tablename) <1 || strlen(m_values) <1)
return 1;
retcode = SQLAllocHandle(SQL_HANDLE_STMT, m_baseid->hdbc, &m_baseid->hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
char m_sql[]="insert into";
char m_sql2[600];
memset(m_sql2,'\0',sizeof(m_sql2));
sprintf(m_sql2,"%s %s values(%s)",m_sql,m_tablename,m_values);//m_tablename,m_values);
/*
int oop=SQLExecDirect(m_baseid->hstmt,(unsigned char *)"set lock mode to wait 1",strlen("set lock mode to wait 1"));
*/
retcode=SQLPrepare(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
int oop=SQLExecDirect(m_baseid->hstmt,(unsigned char *)"set lock mode to wait 1",strlen("set lock mode to wait 1"));
retcode=SQLExecDirect(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
/*
1999/11 retcode=SQLEndTran(SQL_HANDLE_DBC,m_baseid->hdbc,SQL_COMMIT);
*/
retcode=SQLEndTran(SQL_HANDLE_DBC,m_baseid->hdbc,SQL_COMMIT);
if(retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
printf("commit1 the new record failed!\n");
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
return 0;
}
else
{
retcode=SQLEndTran(SQL_HANDLE_DBC,m_baseid->hdbc,SQL_COMMIT);
/*
following is the informix database
oop=SQLExecDirect(m_baseid->hstmt,(unsigned char *)"set lock mode to wait 1",strlen("set lock mode to wait 1"));
*/
int cc=SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
SQLCHAR m_sqlstate[10],m_errmes[100];
SQLINTEGER m_errno;
SQLSMALLINT m_errmeslen;
retcode=SQLGetDiagRec(SQL_HANDLE_STMT,m_baseid->hstmt,1,m_sqlstate,&m_errno,m_errmes,50,&m_errmeslen);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
if(m_errno==-268)
{
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
return 1;
}
}
else
{
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
return 1;
}
}/*end of else:execute SQL*/
}
else
{
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
return 1;
}
SQLCHAR m_sqlstate[100],m_errmes[120];
SQLINTEGER m_errno;
SQLSMALLINT m_errmeslen;
retcode=SQLGetDiagRec(SQL_HANDLE_STMT,m_baseid->hstmt,1,m_sqlstate,&m_errno,m_errmes,120,&m_errmeslen);
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
}
else
{
printf("SQL allocate handle error\n");
return 1;
}
return 1;
}
/*
----------------------------------------------------------------------
FindUser():select user from m_table where condition=m_condition
----------------------------------------------------------------------
*/
int FindUser(DatabaseID *m_baseid,char *m_fields,char * m_tablename,char *m_condition)
{
SQLRETURN retcode;
if(strlen(m_tablename) <5 ||strlen(m_fields)<1)
return -1;
retcode = SQLAllocHandle(SQL_HANDLE_STMT, m_baseid->hdbc, &m_baseid->hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
char m_sql[]="select ";
char m_sql2[500];
if(strlen(m_condition) >3)
sprintf(m_sql2,"%s %s from %s where %s ",m_sql,m_fields,m_tablename,m_condition);
else
sprintf(m_sql2,"%s %s from %s",m_sql,m_fields,m_tablename);
SQLINTEGER m_recordcount, cbrecno;
retcode=SQLPrepare(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode=SQLExecDirect(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
SQLBindCol(m_baseid->hstmt, 1, SQL_C_ULONG, &m_recordcount, 0, &cbrecno);
while (TRUE)
{
retcode = SQLFetch(m_baseid->hstmt);
if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("the corsor is empty or open the corsor error !\n");
}
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
return m_recordcount;
}
else
{
printf("the record fetched overed\n");
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
return 0;
}
}
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
}
return -1;
}
return -1;
}
return -1;
}
/*
----------------------------------------------------------------------------
FindTime():select time form m_table where condition=m_condition
----------------------------------------------------------------------------
*/
int Findtime(DatabaseID *m_baseid,char *m_fields,char * m_tablename,char *m_resulttime)
{
SQLRETURN retcode;
retcode = SQLAllocHandle(SQL_HANDLE_STMT, m_baseid->hdbc, &m_baseid->hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
char m_sql[]="select ";
char m_sql2[100];
sprintf(m_sql2,"%s %s from %s",m_sql,m_fields,m_tablename);
SQLINTEGER cbrecno;
SQLCHAR m_temtime[22];
memset(m_temtime,0,sizeof(m_temtime));
retcode=SQLPrepare(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode=SQLExecDirect(m_baseid->hstmt,(unsigned char *)m_sql2,strlen(m_sql2));
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
SQLBindCol(m_baseid->hstmt, 1, MSQL_DATETIME, &m_temtime, 0, &cbrecno);
while (TRUE)
{
retcode = SQLFetch(m_baseid->hstmt);
if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("the corsor is empty or open the corsor error !\n");
return -1;
}
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
m_resulttime=(char *)m_temtime;
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
return 0;
}
else
{
printf("the record fetched overed\n");
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
return 0;
}
}
SQLFreeHandle(SQL_HANDLE_STMT, m_baseid->hstmt);
}
return -1;
}
return -1;
}
return -1;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -