0


我必须对交付给客户的软件进行一些维护。
该软件正在使用数据库,为了在我的计算机上进行一些调试会话,我必须安装 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。
但是,我确信 MyRecord 数据库中存在表 dbo.通道1 设置参数表。

错误是:

错误信息

我不知道问题出在 SQL Server 配置上还是代码上。
此代码在客户的 PC 上运行良好,因此我会遇到配置问题。提前致谢 !!

4

2 回答 2

0

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

于 2012-09-12T06:47:59.117 回答
0

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

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

于 2012-09-12T06:48:56.480 回答