VS2013连接自带SQLServer本地数据库,工具-连接服务器或者连接数据库都能成功,但是在运行的时候ADO连接总是提示“多步OLEDB操作错误”(异常的描述信息)。
连接数据库代码
void ADOConn::InitADOConn()
{
if (m_pConnection)
{
return;
}
// 初始化OLE/COM库环境
::CoInitialize(NULL);
try
{
//m_pConnection.CreateInstance("ADODB.Connection");
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open(
"Data Source=(LocalDB)\\v11.0; \
AttachDbFilename=C:\\Users\\VisualMemory\\Documents\\Feature.mdf; \
Integrated Security=True;Connect Timeout=30",
"", "", adModeUnknown);
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
}
}
连接字符串是在数据库属性里获取的。
仅仅执行一下代码就会报错“多步OLEDB操作错误”
adoConn.InitADOConn();
if (adoConn.m_pConnection)
{
AfxMessageBox(_T("数据库已连接"));
}
else
{
AfxMessageBox(_T("数据库未连接"));
return false;
}
然后关闭连接的时候也会报错:对象关闭时,不允许操作
退出连接的代码是:
// 退出连接
void ADOConn::ExitConnect()
{
try
{
// 关闭记录集和连接
if (m_pRecordset != NULL)
{
m_pRecordset->Close();
m_pRecordset = NULL;
}
if (m_pConnection != NULL)
{
m_pConnection->Close();
m_pConnection = NULL;
}
// 释放环境
::CoUninitialize();
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
}
}
数据库只有一个表,这是表里的代码:
CREATE TABLE [dbo].[Features] (
[Id] INT NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
我现在认为错误可能是以下其中的一点:
1. 环境不对,但是在编码的时候都能连接成功,也能打开数据库。我也不知道怎么看数据库的配置是否正确,请各位大神和我说一下。(之前安装VS只装了和C++相关的模块,之后又修改,安装了其他的,并且出现问题之后也把VS修复好几次,还是不行)
2. 连接字符串错误,但是我是从属性里获取的,\也做了转义,还是报错。
所以现在很迷糊,上网查了很多资料,也找不到解决办法。
请各位大神不惜指出错误,谢谢啦!