Sql server 2008 SQL Server 2008-打开记录集时崩溃
Sql server 2008 SQL Server 2008-打开记录集时崩溃,sql-server-2008,mfc,Sql Server 2008,Mfc,我必须对交付给客户的软件进行维护。 此软件正在使用数据库,为了在我的计算机上执行一些调试会话,我必须安装SQL server 2008 R2和此软件使用的两个数据库(MyData和MyRecord)。 我在进行设置(登录、将数据库映射到sa用户)时遇到了一些问题,但我设法解决了这些问题。 现在我正试图运行该软件,但在初始化过程中,当它试图打开记录集时,它会崩溃。 首先,我执行以下操作以连接到数据库: ::CoInitialize(NULL); try { HRESULT h
我必须对交付给客户的软件进行维护。
此软件正在使用数据库,为了在我的计算机上执行一些调试会话,我必须安装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);
}
}
将p连接定义为:_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());
}
预编码集定义为:
_RecordsetPtr pRecordset;
当行“pRecordset->Open(…)”运行时,软件在msado15.tli文件的函数Recordset15::Open(…)中崩溃。在这个Recordset15::Open函数中,raw_Open(…)函数返回DB_E_notified。
但是,我确信表dbo。通道1.设置参数表 存在于MyRecord数据库中。
错误是:
我不知道问题是在于SQL server配置还是代码。
这段代码在客户的PC上运行得非常好,因此我会处理一个配置问题。
提前谢谢 在此数据库的ODBC连接器中,未将“将默认数据库更改为”设置为MyRecord数据库。
我勾选了复选框,选择了数据库,现在它工作正常。
您的catch语句应该是catch(\u com\u error&e)
MFC通常通过指针抛出异常,但是“com错误”是一个参考。客户电脑和您电脑上的语言和系统区域设置是否相同?通常是。客户的电脑都是中文的,所以我在笔记本电脑上也这么做了。不同之处在于Windows版本。客户使用的是中文简体版Windows XP,而我使用的是Windows 7 Ultimate版本,“区域和语言”中的所有设置都设置为中文简体。执行此操作时,您的catch语句应为catch(_com_error&e)。显示的错误消息是什么?示例:我刚刚更改了您评论后的代码。错误消息为“[Microsoft][ODBC SQL Server驱动程序][SQL Server]无效的对象名”通道1.设置参数表'."这意味着该表不存在,或者无法分析名称。请尝试在名称周围添加[]括号。您使用的数据库排序规则是什么?这与您的客户相同吗?