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 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图2.0 版本点聚合中Marker的位置无法实时更新,如何解决呢?
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题