📄 dbsession.cpp
字号:
// DBSession.cpp: implementation of the CDBSession class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "PhysicM.h"
#include "DBSession.h"
#include "dblibrarymsg.h"
/*
#ifndef DBLIBRARYMSG_H
#define DBLIBRARYMSG_H
#include "dblibrarymsg.h"
#endif*/
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDBSession::CDBSession()
{
SetAutoThrow(true);
SetAppName();
SetLogFileName();
SetErrLogFile();
SetOutConsole();
// memset(dbproc_status,0,MAXPROCS);
}
CDBSession::~CDBSession()
{
// dbexit();
}
bool CDBSession::Connect(char *UserName,char *Password,char *SrvName)
{
// dberrhandle((DBERRHANDLE_PROC)Err_Handle);
dbmsghandle((DBMSGHANDLE_PROC)Msg_Handle);
// try{
DBLVer=dbinit();
WriteLog(false,"%s",DBLVer);
login=dblogin();
DBSETLUSER(login,UserName);
DBSETLPWD(login,Password);
DBSETLAPP(login,app_name);
BCP_SETL(login,TRUE);//设置批拷贝
dbsetmaxprocs(MAXPROCS);
for(int i=0;i<MAXPROCS;i++)
{
dbproc[i]=dbopen(login,SrvName);
if(dbproc[i]==NULL)
{
char tmp[200];
sprintf(tmp,"severity:%d %s, DBErrCode:%d, DBErrStr:%s 创建连接失败. 服务名:%s",
SYSERR.serverity,svrty[SYSERR.serverity],SYSERR.dberr,SYSERR.dberrstr,SrvName);
WriteLog(false,tmp);
//AfxMessageBox(tmp);
/*"severity:%d %s, DBErrCode:%d, DBErrStr:%s 创建连接失败. 服务名:%s",
SYSERR.serverity,svrty[SYSERR.serverity],SYSERR.dberr,SYSERR.dberrstr,SrvName);
*/
/*
if(SYSERR.oserr != DBNOERR)
{
sprintf(tmp,"severity:%d %s,OSErrCode:%d, OSErrStr:%s 服务名:%s",
SYSERR.serverity,svrty[SYSERR.serverity],SYSERR.oserr,SYSERR.oserrstr,SrvName);
WriteLog(true,tmp);
}
*/
AfxMessageBox(tmp);//ErrCheck();
return FALSE;
}
dbproc_status[i]=1;
}
WriteLog(false,"成功登录到%s",SrvName);
// dbfreelogin(login);
// return dbproc;
return TRUE;
}
void CDBSession::SetAppName(char *AppName)
{
if(AppName[0]!=0) app_name=AppName;
}
void CDBSession::SetLogFileName(char *FileName)
{
if(FileName[0]!=0) LogFileName=FileName;
}
void CDBSession::SetErrLogFile(char *FileName)
{
if(FileName[0]!=0) ErrLogFile=FileName;
}
void CDBSession::SetOutConsole(bool b)
{
_output_to_console=b;
}
int CDBSession::SetDataBase(char *DBName)
{
for(int i=0;i<MAXPROCS;i++)
{
if(dbuse(dbproc[i],DBName)==FAIL)
ErrCheck(ERR_BIND_DATABASE_FAIL,DBName);
}
return 1;
}
void CDBSession::ErrCheck(int code,char *str)
{
char tmp[100];
memset(tmp,0,100);
SetErrCode(code);
switch(code)
{
case ERR_NO_FIND_COL:
if(str!=NULL)
sprintf(tmp,ERR_MSG[-code-100],str);
else strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
break;
case ERR_BCP_BIND_COL:
if(str!=NULL)
sprintf(tmp,ERR_MSG[-code-100],str);
else strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
break;
case ERR_COLTYPE_NOT_MATCHING:
if(str!=NULL)
sprintf(tmp,ERR_MSG[-code-100],str);
else strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
break;
case ERR_MAX_SQLSTR:
if(str!=NULL)
sprintf(tmp,ERR_MSG[-code-100],str);
else strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
break;
case ERR_BIND_DATABASE_FAIL:
if(str!=NULL)
sprintf(tmp,ERR_MSG[-code-100],str);
else strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
break;
case ERR_NO_FIND_COMPUTEID:
if(str!=NULL)
sprintf(tmp,ERR_MSG[-code-100],str);
else strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
break;
case ERR_NO_FIND_COMPUTECOLS:
if(str!=NULL)
sprintf(tmp,ERR_MSG[-code-100],str);
else strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
break;
case ERR_RESULTS_NOROWS:
if(str!=NULL)
sprintf(tmp,ERR_MSG[-code-100],str);
else strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
break;
case ERR_DBSYS:
break;
default:
strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
}
if (GetAutoThrow())
throw (*((DBErr *)this));
//throw(*((WOCIError *)this));
}
int CDBSession::WriteLog(bool ErrLog,const char *format,...)
{
va_list vlist;
va_start(vlist,format);
FILE *lgfp=NULL;
if (ErrLog)
lgfp=fopen(ErrLogFile,"a+t");
else
lgfp=fopen(LogFileName,"a+t");
if (lgfp==NULL)
return ErrLog ? -1 : -2;
int rt;
CTime curtime=CTime::GetCurrentTime();
char tmptime[15];
sprintf(tmptime,"%s",curtime.Format("%Y-%m-%d %H:%M:%S"));
fprintf(lgfp,"[%s] ",tmptime);
if (_output_to_console)
rt=vprintf(format,vlist);
rt=vfprintf(lgfp,format,vlist);
int fmtlen=strlen(format);
if(fmtlen > 1 && format[fmtlen - 1] !='\n')
{
if(_output_to_console)
printf("\n");
fprintf(lgfp,"\n");
}
va_end(vlist);
fclose(lgfp);
return rt;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -