visualmemory 2015-05-03 16:37 采纳率: 0%
浏览 4860

VS2013C++ADO连接自带SQLServer本地数据库,多步OLEDB操作错误

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. 连接字符串错误,但是我是从属性里获取的,\也做了转义,还是报错。

所以现在很迷糊,上网查了很多资料,也找不到解决办法。

请各位大神不惜指出错误,谢谢啦!

  • 写回答

4条回答

  • visualmemory 2015-05-03 16:54
    关注

    附加:
    我之前安装过VS2012,之后又卸载了,再装的VS2013。现在打开C:\Program Files\Microsoft SQL Server\110\LocalDB\Binn下的sqlserver.exe提示:Your SQL Server installation is either corrupt or has been tampered with (Error getting instance ID from name.). Please uninstall then re-run setup to correct this problem"错误。

    评论

报告相同问题?

悬赏问题

  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺