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

📄 dberror.h

📁 学校两基管理系统
💻 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 + -