⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 database.cpp

📁 中间件编程,该程序用于传输客户端数据到服务器,可运行于WINDOWS2000,2003,XP,98等系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:

/*
------------------------------------------------------------------
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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -