Debug Assertion Failed Expression: GetInterface()!=0 error when writing to database table

Posted

技术标签:

【中文标题】Debug Assertion Failed Expression: GetInterface()!=0 error when writing to database table【英文标题】: 【发布时间】:2014-03-16 21:31:49 【问题描述】:

我正在开发一个 MFC 项目,该项目与我的 SQL Server 上的特定表进行通信。但是当我尝试进行删除查询时,我在运行时收到 Debug Assertion Failed 错误消息,当我检查我的表时也没有删除任何内容。 这是我认为错误所在的代码:

<pre> HRESULT hr;
    hr=COLEDBTESTSetAccessor::OpenDataSource();
    if(FAILED(hr))
        MessageBox(NULL,"Connection Failed\n","",MB_OK);
    else
        MessageBox(NULL,"Connected\n","",MB_OK);
    CString strString;
    strString.Append("DELETE FROM PHONE_NUMBERS WHERE ID=");
    CString strParam;
    strParam.Format("%d",nId);
    strString.Append(strParam);
    MessageBox(NULL,(LPCSTR)strString,"",MB_OK);
    hr=this->Open(m_session,strString); <code>

更新和插入查询也会发生同样的情况,但表记录会更新。 谁能告诉我我的错误在哪里? 谢谢你。 :)

【问题讨论】:

非常粗制滥造的错误处理。当您收到指示失败的错误代码时,不要只说“它不起作用!”因为这并不能帮助任何人弄清楚它为什么不起作用,包括你。不顾失败继续执行代码当然是一个非常严重的错误。 【参考方案1】:

我看不到你从哪个基类派生出你的类。我假设你有一个 Command 对象。

所以发生的情况是您已经使用 Open 调用执行了操作。但是在打开之后,您需要进行关闭操作,然后才能通过新语句和打开操作再次使用该命令。

查看 m_spCommand 成员。

【讨论】:

以上是关于Debug Assertion Failed Expression: GetInterface()!=0 error when writing to database table的主要内容,如果未能解决你的问题,请参考以下文章

MFC中的Debug Assertion Failed 如何查找原因

如何在 Visual Studio 中跳过 Debug Assertion Failed 并直接中断

debug assertion failed!是啥问题?高分求助

vc++ 调试时出现Debug Assertion Failed!该怎么办?

opencv检错:程序运行过程正常,当跳出函数时出现断言错误(Debug Assertion Failed)

用Microsoft Visual Studio 2010编译下面这个程序总是提示Debug Assertion Failed