📄 db.cpp
字号:
#include "DB.h"
bool DB::fConnActive=false;
int DB::m_iReConnCount=0;
Connection* DB::m_pConn=NULL;
CWriteDateLog* DB::m_pLog=NULL;
string DB::m_tns="";
string DB::m_user="";
string DB::m_pwd="";
string DB::m_name="";
DB::DB(CWriteDateLog* in, string strName)
{
m_pLog=in;
m_name="["+strName+"]";
m_pConn=new Connection;
db::init();
}
DB::~DB()
{
if(fConnActive)
m_pConn->drop();
if(NULL != m_pConn)
{
delete m_pConn;
m_pConn=NULL;
}
}
bool DB::DbOpen(const char *tns, const char *user, const char *pwd)
{
if(NULL == m_pConn || NULL == m_pLog || NULL == tns || NULL == user || NULL == pwd)
return false;
m_tns=(string)tns;
m_user=(string)user;
m_pwd=(string)pwd;
try{
fConnActive=false;
m_pConn->drop();
db::connect(m_tns, m_user, m_pwd, *m_pConn);
fConnActive=true;
m_iReConnCount=0;
*m_pLog<<TIME<<m_name<<"连接数据库成功!"<<END;
return true;
}catch(OraError &ex){
if(m_iReConnCount<10)
{
*m_pLog<<TIME<<m_name<<"连接数据库异常:"<<ex.message<<END;
m_iReConnCount++;
}
sleep(10);
}
return false;
}
bool DB::Update(string strSQL)
{
if(NULL == m_pLog)
return false;
else if(NULL == m_pConn)
{
*m_pLog<<TIME<<m_name<<"数据库未连接!"<<END;
return false;
}
else if("" == strSQL)
{
*m_pLog<<TIME<<m_name<<"SQL更新语句为空字符串!"<<END;
return false;
}
else if(!fConnActive)
{
if(m_iReConnCount<5)
*m_pLog<<TIME<<m_name<<"数据库连接已关闭!"<<END;
return false;
}
try{
m_pConn->execUpdate(strSQL);
return true;
}catch(OraError &ex){
*m_pLog<<TIME<<m_name<<strSQL<<"\n更新记录集异常:"<<ex.message<<END;
if(NULL != strstr(ex.message.c_str(),"ORA-01012") || NULL != strstr(ex.message.c_str(),"ORA-03113") || NULL != strstr(ex.message.c_str(),"ORA-03114"))
{
*m_pLog<<TIME<<m_name<<"数据库重连......"<<END;
while(!DbOpen(m_tns.c_str(),m_user.c_str(),m_pwd.c_str())){}
}
}
return false;
}
bool DB::Select(string strSQL, Cursor& cur)
{
if(NULL == m_pLog)
return false;
else if(NULL == m_pConn)
{
*m_pLog<<TIME<<m_name<<"数据库未连接!"<<END;
return false;
}
else if("" == strSQL)
{
*m_pLog<<TIME<<m_name<<"SQL更新语句为空字符串!"<<END;
return false;
}
else if(NULL == &cur)
{
*m_pLog<<TIME<<m_name<<"游标参数不存在!"<<END;
return false;
}
else if(!fConnActive)
{
if(m_iReConnCount<5)
*m_pLog<<TIME<<m_name<<"数据库连接已关闭!"<<END;
return false;
}
try{
m_pConn->execQuery(strSQL, cur);
return true;
}catch(OraError &ex){
*m_pLog<<TIME<<m_name<<strSQL<<"\n查询记录集异常:"<<ex.message<<END;
if(NULL != strstr(ex.message.c_str(),"ORA-01012") || NULL != strstr(ex.message.c_str(),"ORA-03113") || NULL != strstr(ex.message.c_str(),"ORA-03114"))
{
cur.drop();
*m_pLog<<TIME<<m_name<<"数据库重连......"<<END;
while(!DbOpen(m_tns.c_str(),m_user.c_str(),m_pwd.c_str())){}
}
}catch(...){
*m_pLog<<TIME<<m_name<<strSQL<<"\n查询记录集异常:"<<"系统错误"<<END;
}
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -