转载自〈Compubin的空间〉Debug Assertion Failed! dbcore.cpp line:2979问题解决(VC++用ODBC访问SQLServer)
来源:互联网 发布:进销存加收银软件排行 编辑:程序博客网 时间:2024/06/05 23:55
觉得以后暂时不会再在VC++中使用数据库访问技术(ODBC和ADO),所以想分别作两个程序,来总结一下。没想到,竟
然出了很多问题。这个问题差不多折磨了我一上午的时间,哎,我容易嘛,我!我郁闷啊,我!
不过现在问题终于解决了。哈哈 Very Well.
首先,要感谢CSDN上tanwei1002的回答,真是一语惊醒梦中人啊 !
他的回答精炼之致,如下:
那就是m_nFields m_nFieldsBound不相等 你调试看看他们的值
问题分析:
我在VC中用ODBC访问SQL Server数据库,除了用单文档建立一个应用程序框架,添加了ODBC数据源,其他的什
么都没有添加。
在建好应用程序初始框架之后,我习惯性的先浏览一下这个应用程序的Class View,我发现比原来的单文档模式多
出来一个CXXXSet类,里面声明了 具体的数据库表中的各列 的对象,比如m_name。然而,这些列对象却引起了我
的疑
问,我数了数,我总共在数据库表中建立了20列,而这里只加载了19列,缺少一项telephone的列对象m_telephone。
大惑不解!(其实缺少这一项,加上很容易,在.h和.cpp文件里加上exchange和声明即可)
然后直接运行之,出现了如下的错误提示:
Debug Assertion Failed!
File:dbcore.cpp
line:2979
…………
问题解决:
dbcore.cpp是VC自带的MFC SRC文件(位于C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC下),代码不可
能出错。就看看着2979行,是什么情况导致的错误。
定位到2979行,代码如下:ASSERT((int)m_nFields == m_nFieldsBound);
ASSERT断言函数用于在代码中捕捉我们的一些假设,具有更好的异常处理特性。如果假设的参数返回值为真,不
做处理;返回值为假,中断程序执行,做出提示。
ASSERT函数介绍具体参考:http://baike.baidu.com/view/653925.htm
开始我并没有认识ASSERT((int)m_nFields == m_nFieldsBound)到底怎么回事,直到看到tanwei1002兄的回答,并
结合自己刚才的疑问,才如梦初醒。
我先在dbcore.cpp的2979行加入断点,然后运行到此处后,分别查看m_nFields和m_nFieldsBound的值,结果正
如疑惑中的那样,m_nFields=19,而m_nFieldsBound=20。问题就变得很清晰,很简单了。于是我在CXXSet头文
件和.CPP文件里加入Telephone的数据交换定义和变量声明,问题迎刃而解!
void COilManageSet::DoFieldExchange(CFieldExchange* pFX)
{RFX_Text(pFX, _T("[Telephone]"), m_Telephone);}
CString m_Telephone;
总结:
关于Debug Assertion Failed! 错误,还有很多其他的问题,比如野指针导致的内存错误之类的,我这只是一例。和其
他的基本没有什么联系,因为错误所在的文件是不同的,解决办法也各有差异。如果不能解决你的问题,深表遗憾!
另附tanwei1002兄的回答地址,以表感谢!
http://topic.csdn.net/u/20100427/17/c7c1af48-ba32-46b6-9216-bc7e394edeb2.html
- 转载自〈Compubin的空间〉Debug Assertion Failed! dbcore.cpp line:2979问题解决(VC++用ODBC访问SQLServer)
- VC Debug Assertion Failed File:dlgdata.cpp Line 43
- VC++ Debug Assertion Failed! 错误(File: winmdi.cpp Line: 141)
- debug assertion failed! winocc.cpp line 381
- MFC学习笔记之VC++ Debug Assertion Failed! 错误(File: strex.cpp Line: 690)
- 关于 debug assertion failed, file:dlgdata.cpp,line"44 错误
- 关于 debug assertion failed, file:dlgdata.cpp,line"44 错误
- 引用 Debug Assertion Failed!File:wingdi.cpp Line:1120
- 引用 Debug Assertion Failed!File:wingdi.cpp Line:1120
- Debug Assertion Failed File:dgbdel.cpp Line 52
- debug assertion failed! mfc/winocc.cpp line 381
- Debug Assertion Failed! File:cmdtarg.cpp Line:52
- Debug Assertion Failed! FILE viewform.cpp , line 69
- debug assertion failed, file:dlgdata.cpp,line"43
- VS2008解决objcore.cpp Line: 40 Debug Assertion Failed!
- c++ occcont.cpp line 925运行错误 Debug Assertion Failed
- Debug Assertion Failed问题解决
- debug assertion failed dbgheap.c line:1044 问题解决
- spring声明式事务配置方法 aop:config切入
- 《走进搜索引擎》-----Ch1---引言
- c++解决棋盘覆盖问题
- POJ 1390 方块消除
- 【WinSocket】WinSocket 编程入门【精华】
- 转载自〈Compubin的空间〉Debug Assertion Failed! dbcore.cpp line:2979问题解决(VC++用ODBC访问SQLServer)
- 简单的js代码..
- java解决棋盘覆盖问题
- java为什么引入异常处理机制
- asp中内置对象的 session Respond方法
- WEBRTC
- ★戏子入画、一生天涯
- 在MFC中显示OpenCV的Mat图像矩阵 ShowMatImgToWnd(GetDlgItem(IDC_ShowImg) , matFrame);
- sgu 134 Centroid