SQL Server 2008 - 打开记录集时崩溃

时间:2012-09-12 05:29:19

标签: sql-server-2008 mfc


我必须对交付给客户的软件进行一些维护 该软件使用数据库,为了在我的计算机上进行一些调试会话,我不得不安装SQL Server 2008 R2和本软件使用的两个数据库(MyData和MyRecord)。 我在设置(登录,将数据库映射到sa用户)时遇到了一些麻烦,但我设法解决了这些问题 现在我正在尝试运行该软件,但它在初始化时尝试打开记录集时崩溃
首先,我执行以下操作以连接到数据库:

::CoInitialize(NULL);
try   
{   
    HRESULT hr = pConnection.CreateInstance("ADODB.Connection");   
    if (SUCCEEDED(hr))   
    {   
        pConnection->ConnectionTimeout = 0;   
        CString strConnect;
        strConnect.Format(_T("Data Source=MyRecord;uid=sa;pwd=sa123456;"));
        hr = pConnection->Open((_bstr_t)strConnect,"","", -1);
    }   
}

将pConnection定义为:

_ConnectionPtr pConnection;

之后,我尝试使用以下代码从数据库“MyRecord”中读取一些数据:

CString sqlQuery = _T("select * from 通道1设置参数表");
try
{
    pRecordset.CreateInstance(_uuidof(Recordset));
    pRecordset->Open(_bstr_t(sqlQuery ),pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
} 
catch(_com_error   *e)  
{  
    AfxMessageBox(e->Description());   
}  

将pRecordSet定义为:

_RecordsetPtr pRecordset;

当运行“pRecordset-> Open(...)”行时,软件在msado15.tli文件的Recordset15 :: Open(...)函数中崩溃。
在这个Recordset15 :: Open函数中,raw_Open(...)函数返回DB_E_NOTABLE 但是,我确信表dbo。通道1设置参数表存在于MyRecord数据库中
错误是:

ERROR MESSAGE

我不知道问题出在SQL服务器配置还是代码中 此代码在客户的PC上运行良好,因此我会遇到配置问题。 在此先感谢!!

2 个答案:

答案 0 :(得分:0)

在此数据库的ODBC连接器中,未将“将默认数据库更改为”设置未设置为MyRecord数据库。
我勾选了复选框,选中了数据库,现在它正常工作。

答案 1 :(得分:0)

你的catch语句应该是catch(_com_error& e)

MFC经常通过指针抛出异常,但是_com_error是一个引用。