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

📄 oradb.cpp

📁 Mysql的处理
💻 CPP
字号:
#include "oradb.h"#define _DEBUG/*char C_MYSQL::sSid[64];char C_MYSQL::sUid[64];char C_MYSQL::sPwd[64];char C_MYSQL::sErrLog[1024];pthread_mutex_t C_MYSQL::sDbLock = PTHREAD_MUTEX_INITIALIZER;MYSQL    *  C_MYSQL::myConnect  = NULL;    */C_DbConnect::C_DbConnect(){	Initialize();}C_DbConnect::~C_DbConnect(){	Destroy();}void C_DbConnect::Lock(){	pthread_mutex_lock(&sDbLock);}void C_DbConnect::Unlock(){	pthread_mutex_unlock(&sDbLock);}int C_DbConnect::Initialize(){	return pthread_mutex_init(&sDbLock, NULL);}void C_DbConnect::Destroy(){	pthread_mutex_destroy(&sDbLock);}int C_DbConnect::Connect(char* szDbUid, char* szDbPwd, char* szDbSid){	char szMsg[512];	char *a = getenv("ROOTDIR");//	snprintf(sErrLog, sizeof(sErrLog), "%s/bin/ora.log", a);	if(!((myConnect  =  mysql_init((MYSQL*)0)) &&  	   mysql_real_connect(  myConnect,  NULL,    			szDbUid, szDbPwd, szDbSid,    			MYSQL_PORT,  NULL,  0  )))    	{    //		logOra(sErrLog, "Connect With Error!");		return 1;	}//    logOra(sErrLog, "Connected!");		if(mysql_autocommit(myConnect, 0) != 0)	{//		logOra(sErrLog, "cannot set Autocommit=0!");		return -2;	}	return 0;}void C_DbConnect::Disconnect(){	if(myConnect != NULL)	{		mysql_close(  myConnect  )  ;    //		logOra(sErrLog, "Disonnected!");	}}#define MYSQL_PORT 3306C_MYSQL::C_MYSQL(){	m_bCreatedByDb = false;		myConnect = NULL;		m_pDb = new C_DbConnect();	Initialize();}C_MYSQL::C_MYSQL(C_DbConnect* pDb) : m_pDb(pDb){	m_bCreatedByDb = true;	myConnect = NULL;	Initialize();}C_MYSQL::~C_MYSQL(){	Destroy();	if(!m_bCreatedByDb)	{		if(m_pDb != NULL)		{			delete m_pDb;			m_pDb = NULL;		}	}}int C_MYSQL::DbCount(const char* szSql, MYSQL* pConnect){	int a=mysql_real_query(myConnect,szSql, strlen(szSql) );	MYSQL_RES *res_ptr = mysql_store_result(myConnect);	if (res_ptr == NULL) 	{		return -1;	}	int num = mysql_num_rows(res_ptr);	if(num != 1)	{		return -1;	} 	char id[21];	id[0]=0;    	MYSQL_ROW sqlrow = mysql_fetch_row(res_ptr);	if(sqlrow[0] != NULL)	{		strcat(id, sqlrow[0]);	}			mysql_free_result(res_ptr);		return atoi(id);}int C_MYSQL::GetSeq(char* szSeqId){	char szSQL[] = {"select LAST_INSERT_ID()"};	int res = mysql_real_query(myConnect, szSQL, strlen(szSQL));	if(res != 0)	{		logOra(sErrLog, "%d %s\n", mysql_errno(myConnect), mysql_error(myConnect));		return -1;	}	MYSQL_RES *res_ptr = mysql_store_result(myConnect);	if (res_ptr == NULL) 	{		return -2;	}	MYSQL_ROW sqlrow = mysql_fetch_row(res_ptr);	if(sqlrow[0] != NULL)	{		snprintf(szSeqId, LEN_SEQ+1, "%s", sqlrow[0]);		printf("Last_Id=%s\n", szSeqId);	}			mysql_free_result(res_ptr);		return 0;}void C_MYSQL::logOra(char* szFilename, char* fmt,...){	char buffer[MAXLINE];	time_t t;	struct tm* t2;	char szTime[40];	va_list arg_ptr;	va_start(arg_ptr, fmt);	vsnprintf(buffer, MAXLINE, fmt, arg_ptr);	va_end(arg_ptr);	t = time(0);	t2 = localtime(&t);	snprintf(szTime, 40, "%04d%02d%02d-%02d%02d%02d ", 		t2->tm_year+1900,		t2->tm_mon+1,		t2->tm_mday,		t2->tm_hour,		t2->tm_min,		t2->tm_sec);		char f[MAXLINE];		snprintf(f, MAXLINE, "%s", szFilename);		FILE* fp = fopen(f, "a");		if(fp != NULL)		{		fprintf(fp, "%s %s\n", szTime, buffer);		fclose(fp);		}		else		{		printf("Err=%s\n", f);		}#define OUTPUT_CRT#ifdef OUTPUT_CRT		printf("%s\n", buffer);#endif}void C_MYSQL::Lock(){	//pthread_mutex_lock(&sDbLock);	m_pDb->Lock();}void C_MYSQL::Unlock(){	//pthread_mutex_unlock(&sDbLock);	m_pDb->Unlock();}int C_MYSQL::Initialize(){	return 0;//pthread_mutex_init(&sDbLock, NULL);}void C_MYSQL::Destroy(){	//pthread_mutex_destroy(&sDbLock);}void C_MYSQL::onError(){	int nError = mysql_errno(myConnect);	logOra(sErrLog, "%d %s\n", nError, mysql_error(myConnect));	if(nError == 2006)	{		DbDisconnect();		DbConnect(sSid,sUid,sPwd);	}}int C_MYSQL::DbConnect(char* szDbUid, char* szDbPwd, char* szDbSid){	char szMsg[512];	char *a = getenv("ROOTDIR");	snprintf(sErrLog, sizeof(sErrLog), "%s/bin/ora.log", a);/*	if (Initialize())	{		return -1;	}  	snprintf(sUid, 64, "%s", szDbUid); 	snprintf(sPwd, 64, "%s", szDbPwd); 	snprintf(sSid, 64, "%s", szDbSid); 	printf("u=%s p=%s s=%s\n", sUid,sPwd, sSid);		if(!((myConnect  =  mysql_init((MYSQL*)0)) &&  	   mysql_real_connect(  myConnect,  NULL,    			szDbUid, szDbPwd, szDbSid,    			MYSQL_PORT,  NULL,  0  )))    	{    		logOra(sErrLog, "Connect With Error!");		return 1;	}    logOra(sErrLog, "Connected!");		if(mysql_autocommit(myConnect, 0) != 0)	{		logOra(sErrLog, "cannot set Autocommit=0!");		return -2;	}*/	if(m_pDb->Connect(szDbUid, szDbPwd, szDbSid) != 0)	{		logOra(sErrLog, "cannot set Autocommit=0!");		return -2;	}	myConnect = m_pDb->Get();	return 0;}void C_MYSQL::DbDisconnect(){/*	if(myConnect != NULL)	{		mysql_close(  myConnect  )  ;    		logOra(sErrLog, "Disonnected!");	}	*/	m_pDb->Disconnect();}int C_MYSQL::DbUpdateTable(char* pInSzSQL, struct S_RESULT* pOut){	char szSQL[SQLMAX];	snprintf(szSQL, SQLMAX, "%s", pInSzSQL);#ifdef _DEBUG	logOra(sErrLog, szSQL);#endif	Lock();		int res = mysql_real_query(myConnect, szSQL, strlen(szSQL));	if(res != 0)	{		Unlock();		logOra(sErrLog, "%d %s\n", mysql_errno(myConnect), mysql_error(myConnect));		return -1;	}	DbCommit();	Unlock();	return 0;}int C_MYSQL::DbUpdateTable2(char* pInSzSQL, struct S_RESULT* pOut){	char* szSQL = pInSzSQL;#ifdef _DEBUG	logOra(sErrLog, szSQL);#endif	Lock();		int res = mysql_real_query(myConnect, szSQL, strlen(szSQL));	if(res != 0)	{		Unlock();		logOra(sErrLog, "%d %s\n", mysql_errno(myConnect), mysql_error(myConnect));		return -1;	}	Unlock();	return 0;}int C_MYSQL::DbCommit(){	mysql_commit(myConnect);	return 0;}int C_MYSQL::DbRollback(){	mysql_rollback(myConnect);	return 0;}int C_MYSQL::DbReadOgtplTableCount(    char *p_timeStart,    int   p_timeAcceptedFree,    int  *p_bIsFree,    char *p_timeErrorStart,    char *p_timeErrorEnd,    int  *p_nResult){    char *p_timeStart2 = p_timeStart;    int   p_timeAcceptedFree2 = p_timeAcceptedFree;	char szSQL[SQLMAX];	snprintf(szSQL,SQLMAX,		"call CheckOGtplTableRecordCount('%s',%d,@1,@2,@3,@4)",		p_timeStart2, p_timeAcceptedFree2);	Lock();		int res = mysql_real_query(myConnect, szSQL, strlen(szSQL));	if(res != 0)	{		Unlock();		logOra(sErrLog, "%d %s\n", mysql_errno(myConnect), mysql_error(myConnect));		return -1;	}	MYSQL_RES *res_ptr = mysql_store_result(myConnect);	if (res_ptr == NULL) 	{		Unlock();		onError();		return -1;	}	MYSQL_ROW sqlrow = mysql_fetch_row(res_ptr);			if(sqlrow[0] != NULL)		*p_bIsFree = atoi(sqlrow[0]); 	if(sqlrow[1] != NULL)		memcpy(p_timeErrorStart, sqlrow[1], LEN_DATETIME);	if(sqlrow[2] != NULL)		memcpy(p_timeErrorEnd, sqlrow[2], LEN_DATETIME);	if(sqlrow[3] != NULL)		*p_nResult = atoi(sqlrow[3]);	mysql_free_result(res_ptr);		if (mysql_errno(myConnect)) 	{		Unlock();		onError();		return -1;	}		Unlock();	return 0;}

⌨️ 快捷键说明

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