📄 dberror.h
字号:
// DBError.h: interface for the CDBError class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_DBERROR_H)
#define AFX_DBERROR_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//error information define for the CDBError class.
#define ERR_DBSYS -1 //数据库系统错误
#define ERR_NO_FIND_COL -100//找不到指定的列对象
#define ERR_COLTYPE_NOT_MATCHING -101//指定的列类型与变量类型不匹配
#define ERR_NO_INIT_BUFF -102//读取数据前没有进行初始化
#define ERR_NO_FIND_COMPUTEID -103 //无法获取指定的计算列的COMPUTE子句标识号
#define ERR_NO_FIND_COMPUTECOLS -104 //无法获取计算列的列数
#define ERR_BATCH_COPY_INIT -105 //批拷贝初始化失败
#define ERR_BATCH_COPY_CONTROL -106 //批拷贝设置参数失败
#define ERR_BATCH_COPY_COLSET -107 //设置列数失败
#define ERR_BATCH_COPY_FORMAT -108 //设置表列格式失败
#define ERR_BATCH_COPY_EXEC -109 //批拷贝执行失败
#define ERR_BCP_SEND_ROW -110 //批拷贝发送数据失败
#define ERR_BCP_SAVE_DONE -111 //批拷贝保存失败
#define ERR_BCP_SAVE_BATCH -112 //批拷贝保存失败
#define ERR_BCP_BIND_COL -113 //批拷贝无法绑定数据列
#define ERR_BCP_MORETEXT -114 //批拷贝执行MORETEXT函数失败
#define ERR_PROC_INIT -115 //存储过程初始化失败
#define ERR_PROC_PARAM -116 //存储过程参数初始化失败
#define ERR_PROC_SEND -117 //执行存储过程失败
#define ERR_PROC_LOCK -118 //无法锁定
#define ERR_PROC_RESULT -119 //存储过程结果错误
#define ERR_TRANS_BEGIN -120 // BeginTransaction failed: %x\n
#define ERR_TRANS_LIST -121 //dbenlisttrans() failed: %x\n",rc
#define ERR_TRANS_COMMIT -122//pTransaction->Commit() failed: %x
#define ERR_TRANS_RELEASE -123//释放事务失败
#define ERR_TRANS_COMMIT_RELEASE -124//提交事务与释放事务同时失败
#define ERR_TRANS_FREE -125//"提交成功后释放事务失败."
#define ERR_TRANS_ABORT -126//pTransaction->Release() failed
#define ERR_TRANS_ROLLBACK_RELEASE -127//"回滚事务后释放事务失败."
#define ERR_DTC_MANAGER -128//DtcGetTransactionManager failed: %x\n", hr
#define ERR_SQL_ALLOCATE -129//NEW SQL语句内存失败
#define ERR_SQL_CMD -130//dbcmd err
#define ERR_SQL_RESULTS -131//dbresults error
#define ERR_BIND_DATABASE_FAIL -132 //打开数据库出库
#define ERR_RESULTS_NOCOLS -133 //返回0列数据
#define ERR_RESULTS_NOROWS -134 //返回0行数据
#define ERR_CANCEL_RESULTS -135 //dbcancel failed
#define ERR_NONE_FREE_DBPROCESS -136 //没有空闲的DBPROCESS
#define ERR_INVALID_DBSESSION -137 //无效的会话
#define ERR_INVALID_INDEX -138 //无效的索引值
#define ERR_INVALID_STATE -139 //无效的状态值
#define ERR_GETCOLINFO_FAIL -140 //无法取得库表第%d列的信息
#define ERR_UNFORMAT_SQL -141 //格式化SQL语句错误
#define ERR_NO_SQL -142 //SQL语句为空
#define ERR_ALLOCATE_TABLE -143 //为内存表分配内存失败
#define ERR_UNKNOW_COLTYPE -144 //无法识别的字段类型
#define ERR_INVALID_COLID -145 //无效的列号
#define ERR_INVALID_ROWID -146 //无效的行号
#define ERR_BIND_COL_ROW -147 //无法绑定指定列及行[%s]
#define ERR_UNKNOW -148//未知错误
static char *ERR_MSG[]={
"找不到指定的列对象'%s' ",
"指定的列'%s'类型与变量类型不匹配",
"读取数据前没有进行初始化",
"无法获取指定的计算列%s的COMPUTE子句标识号",
"无法获取计算列%s",
"批拷贝初始化失败",
"批拷贝设置参数失败",
"设置列数失败",
"设置表列格式失败",
"批拷贝执行失败",
"批拷贝发送数据失败",
"批拷贝保存失败",
"批拷贝保存失败",
"批拷贝无法绑定数据列'%s' ",
"批拷贝执行MORETEXT函数失败",
"存储过程初始化失败",
"存储过程参数初始化失败",
"执行存储过程失败",
"无法锁定存储过程",
"存储过程结果错误",
"开始事务失败",
"dbenlisttrans() failed",
"事务提交失败",
"释放事务失败",
"提交事务与释放事务同时失败",
"提交成功后释放事务失败.",
"pTransaction->Release() failed",
"回滚事务后释放事务失败.",
"DTC事务管理器无法启动",
"SQL语句内存分配失败",
"执行缓冲区中的命令失败",
"dbresults() failed",
"打开数据库%s失败",
"%s返回0列数据",
"%s返回0行数据",
"dbcancel() failed",
"没有空闲的连接可提供使用",
"无效的DBSession",
"无效的索引值",
"无效的状态值",
"无法取得库表第%s列的信息",
"格式化SQL语句错误",
"SQL语句为空",
"为内存表分配内存失败",
"无法识别的字段类型",
"无效的列号[%s]",
"无效的行号[%s]",
"无法绑定指定列[%s]",
"未知错误"
};
class CDBError
{
char filen[50];
int errcode;
int lineid;
bool AutoThrow;
char msgbuf[1024];
public:
/*
void SetAutoThrow(bool bvl);
void SetErrMsg(char *msg);
void SetErrCode(int code);
int GetErrCode();
void GetLastErr(int &code,char **buf);
void SetErrPos(int line,char *fn);
void GetErrPos(int &line,char **fn);
bool GetAutoThrow();
/*/
// char *GetErr() {return GetErr();}
CDBError(){}
virtual ~CDBError(){}
void SetAutoThrow(bool bvl) {AutoThrow=bvl; }
void SetErrMsg(char *msg){ strcpy(msgbuf,msg); }
void SetErrCode(int code){ errcode=code;}
int GetErrCode(){return errcode;}
void GetLastErr(int &code,char **buf) {
code=errcode;
*buf=(char *)msgbuf;
/*
if(errcode==ERR_DBSYS)
*buf=GetErr();
else *buf=(char *)msgbuf; */
}
void SetErrPos(int line,char *fn) {
lineid=line;
strcpy(filen,fn); }
void GetErrPos(int &line,char **fn) {
line=lineid;
*fn=(char *)filen; }
bool GetAutoThrow() { return AutoThrow; }
virtual void ErrCheck(int code=ERR_DBSYS,char *str=NULL)
{
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_SQL_ALLOCATE:/*
if(str!=NULL)
sprintf(tmp,ERR_MSG[-code-100],str);
else */
strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
break;
case ERR_UNFORMAT_SQL:
strcpy(tmp,ERR_MSG[-code-100]);
SetErrMsg(tmp);
break;
case ERR_NO_SQL:
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_GETCOLINFO_FAIL:
if(str != NULL)
sprintf(tmp,ERR_MSG[-code - 100],str);
else strcpy(tmp,ERR_MSG[-code - 100]);
SetErrMsg(tmp);
break;
case ERR_INVALID_ROWID:
if(str != NULL)
sprintf(tmp,ERR_MSG[-code - 100],str);
else strcpy(tmp,ERR_MSG[-code - 100]);
SetErrMsg(tmp);
break;
case ERR_INVALID_COLID:
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);
}
throw (*((CDBError *)this));
}
};
#endif // !defined(AFX_DBERROR_H)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -