?? otlhandle.cpp
字號(hào):
// OtlHandle.cpp: implementation of the COtlHandle class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "OtlHandle.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
COtlHandle::COtlHandle()
{
ini_otl();
m_db.set_timeout(20 * 1000);
m_db.set_max_long_size(20000);
}
COtlHandle::~COtlHandle()
{
fini_otl();
}
//建立數(shù)據(jù)庫(kù)連接
bool COtlHandle::ConnectDB(const char * strConn,std::string& strErr)
{
try
{
m_db.rlogon(strConn);
}
catch(otl_exception& p)
{ // intercept OTL exceptions
char szErr[256];
sprintf(szErr,"%s",p.msg);
strErr = szErr;
return false;
}
m_strConnStr = strConn;
return true;
}
//重新連接數(shù)據(jù)庫(kù)
bool COtlHandle::ReConnect(std::string& strErr)
{
try
{
fini_otl();//
ini_otl(); //
m_db.set_timeout(20*1000);
m_db.rlogon(m_strConnStr.c_str());
}
catch(otl_exception& p)
{ // intercept OTL exceptions
char szErr[256];
sprintf(szErr,"%s",p.msg);
strErr = szErr;
return false;
}
return true;
}
//直接執(zhí)行
bool COtlHandle::ExcuteSQL(const char * strSQL,std::string& strErr)
{
char szErr[512];
try
{
otl_cursor::direct_exec
(
m_db,
strSQL
); // create table
}
catch(otl_exception& p)
{ // intercept OTL exceptions
sprintf(szErr,"%s",p.msg);
return false;
}
return true;
}
//
bool COtlHandle::GetDataSetFromDB(const char * strQuery, otl_stream *pDataSet)
{
char strErr[256];
try
{
otl_stream i(50, // buffer size may be > 1
strQuery, // SELECT statement
m_db // connect object
);
pDataSet = &i;
}
catch(otl_exception& p)
{
printf(strErr,"%s",p.msg); // print out error message
printf(strErr,"%s",p.stm_text); // print out SQL that caused the error
return false;
}
return true;
}
bool COtlHandle::ErrHandle(const std::string& strErr)
{
if(strErr.empty())
return true;
std::string strTemp;
if(!strErr.empty()
&& (strErr.substr(0,9) == CONNECT_LOSED
|| strErr.substr(0,9) == NO_CONNECT
|| strErr.substr(0,9) == ENVI_NO_INIT)
)//
{
if(!this->ReConnect(strTemp))
return false;
}
if(!strErr.empty() && (strErr.substr(0,9) == NO_TABLESPACE))//
{
return false;
}
if(!strErr.empty() && (strErr.substr(0,9) != TABLE_NO_EXIST))
return false;
return false;
}
void COtlHandle::ini_otl()
{
otl_connect::otl_initialize(); // initialize OCI environment
}
void COtlHandle::fini_otl()
{
if(m_db.connected)
m_db.logoff();
#ifndef OTL_ODBC
otl_connect::otl_terminate();
#endif
}
//
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -