急问:我在VC中用ADO连接数据库,连接的这段程序应该写在什么位置

来源:百度知道 编辑:UC知道 时间:2024/05/09 14:01:46
我写在一个自建的对话框中了。可以编译过去,但是运行一开始就会弹出一个大框(终止、重试、忽略),选择忽略后还可以连接上数据库,其他操作正常。那位高手知道这是什么问题?拜托拜托了。对了,我用的是VC7.0
我是放在对话框的初始化中了,我很菜,我想知道哪个是主对话框?好象是在调用AfxOleInit()是出错了,为什么那?
我点击重试,它就停在BOOL AFXAPI AfxOleInit()ASSERT中了
{
_AFX_THREAD_STATE* pState = AfxGetThreadState();
ASSERT(!pState->m_bNeedTerm);
}
我的程序
BOOL CADOApp::InitInstance()
{
if (!::AfxOleInit ())
{
::AfxMessageBox ("COM库初始化失败!");
return false;
}
}
你看我的程序里也没有参数,没有人遇到过这个问题吗?

忽略错误仍然可以运行?
连接数据库的代码我建议你放在对话框的OnInitDialog()函数里,而且最好放在主窗口的OnInitDialog()里。如果一定要放在子窗口,那也要在OnInitDialog()里,如果没有这个函数就自己写一个。
*********************
补充:我的经验都来自VC++6.0,所以没有见过出错之后还能运行的程序。
ADO的大致步骤是:
1.初始化库,就是调用AfxOleInit();
2.创建Connection对象,如果创建成功,就接着用这个Connection对象调用数据库驱动程序连接数据库;
3.创建结果集对象,用Connection对象执行SQL语句,将返回的查询结果放入结果集对象中。
在这之前,还要导入Windows操作系统的msado15.dll动态链接库。
开发环境虽不同,但ADO方法应该是一样的。
如果你觉得有必要看我很久前做的例子,就说一声。

楼上说的我也没怎么明白 只是主对话框应该是
CADODlg而不是CADOApp 你再自习看看

"运行一开始就会弹出一个大框(终止、重试、忽略)"

这个应该是VC中的ASSERT()语句的调用
在那个对话框中应该有具体的出问题的行数
如果出问题的文件不是你自己写的文件的话应该就是你调用VC的时候某个参数没有传好 你再到它所说的那个文件那里去看到底是那个函数 再反过来看你是在那里调用了这个函数
把参数自习看看 应该可以解决的