异常:数据库异常

02/21/2013

本文内容

本文演示如何处理数据库异常。大多数材料本文中应用您使用的是了开放式数据库连接 (odbc) 的 MFC 类或数据访问对象的 MFC 类一起使用 (DAO)。对一个或其他模型中的物质特定显式标记。主题包括:

对于异常处理的路由

数据库异常处理的示例

对于异常处理的路由

该方法相同的是否使用 DAO 或 ODBC 一起使用。

应始终编写异常处理程序来处理异常情况。

对捕获数据库异常的最佳 pragmatic 方法是测试您的异常方案的应用程序。确定可能为您的代码的操作发生的异常,并强制发生异常。然后检查跟踪输出发现引发异常,或检查在调试器中返回的错误信息。这将通知您后者返回您为异常方案会看到您使用的代码。

用于 ODBC 异常的错误代码

除了返回框架中定义的代码,所以窗体 AFX_SQL_ERROR_XXX的名称,某些 CDBExceptions 基于 ODBC 返回代码。此类异常的返回代码具有窗体 SQL_ERROR_XXX的名称。

返回代码 —结构定义和 ODBC 定义 —该数据库类可能返回。类下 CDBException的 m_nRetCode 数据成员。附加有关 MSDN Library 返回 ODBC 定义的代码可在 ODBC SDK programmer's reference。

用于 DAO 异常的错误代码

对于 DAO 异常,更多信息通常可用。通过所捕获的 CDaoException 对象的三个数据成员可以访问错误信息:

m_pErrorInfo 包含指向封装在错误对象的 DAO 的集合的错误信息与该数据库的 CDaoErrorInfo 对象。

m_nAfxDaoError 包含从 MFC DAO 类的一个扩展的错误代码。这些错误代码,但窗体 AFX_DAO_ERROR_XXX的名称,文档在 CDaoException的数据成员下。

m_scode 包含从 DAO 的 OLE SCODE ,如果适用)。但您很少需要此错误代码,。通常更多信息可在其他两个数据成员。有关更多参见数据成员有关 SCODE 值。

有关 DAO 错误、 DAO 错误对象类型和 DAO 错误集合的附加信息可以在类 CDaoException下。

数据库异常处理的示例

下面的示例尝试构造 CRecordset- 堆上派生的对象。 new 运算符,然后打开记录集 (对于 ODBC 数据源)。有关 DAO 类的类似示例,请参见 “DAO 异常示例”下面。

ODBC 异常示例

打开 成员函数可能会引发异常 (ODBC 类的类型 CDBException ),因此, 打开 调用与 try 的此代码括号块。后续 catch 块捕捉 CDBException。可以检查异常对象,调用 e,但是,在本例中它是已知的足够尝试创建记录集失败。catch 块显示消息框并通过删除记录集对象清理。

CRecordset* CMyDatabaseDoc::GetRecordset()

{

CCourses* pSet = new CCourses(&m_dbCust);

try

{

pSet->Open();

}

catch(CDBException* e)

{

AfxMessageBox(e->m_strError, MB_ICONEXCLAMATION);

// Delete the incomplete recordset object

delete pSet;

pSet = NULL;

e->Delete();

}

return pSet;

}

DAO 异常示例

DAO 的示例类似于 ODBC 的示例,但是,您通常可以检索更多信息。下面的代码还尝试打开记录集。如果该尝试引发异常,可以检查异常对象的数据成员错误信息。与前面的 ODBC 示例,其足以可能知道尝试创建记录集失败。

CDaoRecordset* CMyDaoDatabaseDoc::GetRecordset()

{

CDaoRecordset* pSet = new CCustSet(&m_db);

try

{

pSet->Open();

}

catch(CDaoException* pe)

{

AfxMessageBox(pe->m_pErrorInfo->m_strDescription, MB_ICONEXCLAMATION);

// Delete the incomplete recordset object

delete pSet;

pSet = NULL;

pe->Delete();

}

return pSet;

}

此代码从异常对象的 m_pErrorInfo 成员获取错误消息的字符串。,在引发异常时, MFC 加载此成员。

有关错误信息的讨论由 CDaoException 对象返回,请参见类 CDaoException 和 CDaoErrorInfo。

当您使用 Microsoft Jet (.mdb) 数据库,,并在许多情况下,当使用 ODBC 时,只有一错误对象。在极少数情况下,当您使用 ODBC 数据源,而具有多个错误,可以通过 DAO 的基于 CDaoException::GetErrorCount返回的错误数的错误集合循环。每次通过循环,请调用 CDaoException::GetErrorInfo 重新填充 m_pErrorInfo 数据成员。

请参见

概念

西软服务器显示数据库异常,异常:数据库异常相关推荐

  1. 西软服务器linux,详细讲解西软FOXHIS增量备份与恢复方法

    如何为西软数据做增量备份及恢复 西软在实施阶段时,会设置好几个Linux shell的自动任务,把数据每天全库备份两次,并且并把数据通过ftp拷至备份库,其实这样做存在非常大的安全隐患,数据库服务器如 ...

  2. 西软服务器linux,FOXHIS前台西软服务器端和客户端安装教程.pdf

    FOXHIS前台西软服务器端和客户端安装教程 西软服务器端和客户端安装教程 前言:网上有很多关于西软 FOXHIS PMS 的安装教程,但大多没有详细描述并且内容非常肤浅粗燥,本特意把 自己的安装过程 ...

  3. 西软服务器linux,西软问题解答

    1.备份好原机器上的有用文件,特别是电话计费程序所在目录一定要备份好: 2.重装系统,要求和原计费电话的操作系统一致,IP地址和原机器一样: 3.装好西软系统客户端,可将备份文件拷贝过来,若没有可以从 ...

  4. 数据库服务器显示网卡断开连接,数据库服务器故障分析与处理.doc

    数据库服务器故障分析与处理 摘要:目前,数据库服务器的重要性已经在校园网内逐渐体现出来,但是数据库服务器不可避免地会发生故障,破坏甚至丢失重要的数据信息将会为院校带来不可预计的经济损失,因此需要使用快 ...

  5. 与数据库服务器通讯协议出错,与数据库服务器通讯异常

    与数据库服务器通讯异常 内容精选 换一换 华为云提供两种连接方式通过SQL Server客户端连接实例:非SSL连接和SSL连接.其中,SSL连接实现了数据加密功能,具有更高的安全性.安装SQL Se ...

  6. Linux服务器 访问数据库1521端口网络异常

    参与人员:业务人员,运维人员,网络人员,数据库DBA 问题:Linux服务器 访问数据库1521端口网络异常 初步排查,服务器telnet 数据库端口 正常,ping ip正常,查看网络防火墙基本正常 ...

  7. Hibernate用Mysql数据库时链接关闭异常的解决

    在一个项目中,客户要求除操作系统外全部使用免费软件,因此我使用了Mysql 4.0作为数据库服务器,其JDBC驱动为3.0.9版本,在给客户安装后调试一切正常.可是到了第二天,只要一登录就提示&quo ...

  8. cf游戏服务器显示怪文,cf游戏服务器异常怎么解决方案

    cf游戏服务器异常怎么解决方案 内容精选 换一换 云服务器列表页面,云服务器的状态显示为"异常".进入云服务器列表页面,鼠标移动至"异常"状态处,查看具体的异常 ...

  9. Linux+写数据异常断电,同事处理异常断电数据库状态变为SUSPECT过程

    墨西哥工厂机房失火,异常断电后开启报表服务器,发现一个数据库OTS状态变为SUSPECT,不能查询,不能查看属性,不能备份. Windows 2003sp2+SQL Server 2005sp2 1. ...

最新文章

  1. python拼写检查_拼写检查 - Python文本处理教程™
  2. 超分辨率(super-resolution)VS解模糊(deblur)
  3. 附加 集合数据_最全的实例详解:Python字符串、列表、元组、字典、集合的补充...
  4. Windows 2000服务器安全配置精华技巧
  5. 现网问题排查实战:Jstat,Jstack,Jmap
  6. java list平均分成5份_java中将一个List等分成n个list的工具方法(推荐)
  7. python 添加环境变量_怎么将 Python 重新添加到环境变量?
  8. CocosCreator3.x的2D碰撞实例 教程
  9. 硅谷火爆的云原生,你会玩吗?
  10. matlab画韦恩图,R语言画维恩图
  11. cpu功耗排行_最全cpu性能排行榜 cpu性能排行天梯图
  12. StreamNative翟佳:若无社区,开源项目可能是个死项目
  13. 电商后台:商品管理系统
  14. 利用辐射光谱计算温度 matlab,时间调制型FTIR光谱仪辐射度定标方法的研究
  15. 膨胀珍珠岩板(EPB) 保温材料英国UKCA 认证-EN 13169
  16. 为什么程序员越跳槽收入越高?
  17. html5如何让多张图片重叠,HTML5图片层叠
  18. 《几乎必问》Spring 面试题开胃菜
  19. 调用百度地图出现的自动创建完成对象会清空输入框值的问题
  20. 十款背单词软件强烈推荐

热门文章

  1. undefined reference to pow
  2. python常用的OCR文字识别与图片定位方式
  3. python 文本分析_使用Python进行文本分析–书评
  4. 【Python】打印输出200以内的所有素数,并输出素数的个数
  5. 上海交大PMP每日一题
  6. java 汉字基于拼音首字母检索
  7. 软件实习项目4——校园一卡通管理系统(成品展示)
  8. 真刺激!电容放电,火花四溅!
  9. oracle扩展归档空间大小,解决Oracle数据库归档日志占满磁盘空间问题
  10. tdk怎么设置_网站的TDK如何设置及优化