This application has requested the Runtime to terminate it in an unusual way.

geekstone 2011-05-01 09:18:11

编写ADO时出现这样的问题:
在 Windows XP 中运行自定义 Microsoft Visual C++ 6.0 程序时,收到“This application has requested
the Runtime to terminate it in an unusual way”(此应用程序已请求运行时以异常方式终止它)错误消息


请问要如何解决啊?

微软官网上也有这个问题http://support.microsoft.com/kb/884538/zh-cn#appliesto,但是感觉说了根没说一样,有的说用早期的 Msvcrt.dll 文件和 Msvcirt.dll 文件替换,我分别用5.0和6.0版本的两个文件还是不行,请问要如何解决啊?
谢谢了!!!
...全文
3080 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang_tianxu 2012-10-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

我找到我的问题了,是数据库文件的问题,我用的SQL SERVER2005,把数据库文件换了后就好了,不知你们是不是这个问题,谢谢大家~~
[/Quote]
请问换成什么文件
我换成下载程序的附带数据库都还是这个问题
zhang_tianxu 2012-10-07
  • 打赏
  • 举报
回复
那要换成是什么文件啊
geekstone 2011-06-23
  • 打赏
  • 举报
回复
我找到我的问题了,是数据库文件的问题,我用的SQL SERVER2005,把数据库文件换了后就好了,不知你们是不是这个问题,谢谢大家~~
  • 打赏
  • 举报
回复
我也出现了这个问题,是在使用了多线程和文件操作时出现的,而且还不是必发现象。。。
找到答案 通知下

关注。。。
zyq5945 2011-05-09
  • 打赏
  • 举报
回复
是所有的代码都加异常捕获了吗,加异常捕获的参数是_com_error& e
geekstone 2011-05-07
  • 打赏
  • 举报
回复
就是这个错误啊
This application has requested
the Runtime to terminate it in an unusual way!
zyq5945 2011-05-02
  • 打赏
  • 举报
回复
所有的ADO代码都加异常捕获,异常捕获看是什么错误
try
{
//你的ADO代码
}
catch (_com_error& e)
{
AfxMessageBox(e.Description());
}

geekstone 2011-05-01
  • 打赏
  • 举报
回复
做了,微软官网上http://support.microsoft.com/kb/884538/zh-cn#appliesto说是文件问题,但是不知道怎么搞。。。。
King_hhuang 2011-05-01
  • 打赏
  • 举报
回复
ADO访问数据库的基本步骤:

(1)、引入ADO类 ,加到stdafx.h中#endif // _AFX_NO_AFXCMN_SUPPORT后面

#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")

(2)、初始化COM (放在对话框初始化函数里面或者CXXXApp::InitInstance()中)

在MFC中可以用AfxOleInit();非MFC环境中用:
CoInitialize(NULL);

(3)、包含后就可以用3个智能指针了:_ConnectionPtr、_RecordsetPtr和_CommandPtr

(4)、连接数据库
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
m_pConnection->ConnectionTimeout = 0;
hr = m_pConnection->Open( "Provider=SQLOLEDB.1;Password=密码;Persist Security Info=True;User ID=用户名;Initial Catalog=数据库名;Data Source=127.0.0.1(本机)", "", "", adConnectUnspecified);

m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->CommandTimeout = 5;
m_pCommand->ActiveConnection = m_pConnection;
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s,%s",e.ErrorMessage(),e.Description());
AfxMessageBox(errormessage);///显示错误信息
}

(5)、打开记录集
首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));

// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误
try
{
m_pRecordset->Open("SELECT * FROM DemoTable",// 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}

……

照着检查一下,看看你是不是每一步都做了,记得数据库操作try catch一下,捕捉一下有意义的错误提示

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧