问题描述
- 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. 连接字符串错误,但是我是从属性里获取的,也做了转义,还是报错。所以现在很迷糊,上网查了很多资料,也找不到解决办法。
请各位大神不惜指出错误,谢谢啦!
解决方案
附加:
我之前安装过VS2012,之后又卸载了,再装的VS2013。现在打开C:Program FilesMicrosoft SQL Server110LocalDBBinn下的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"错误。
解决方案二:
是vs没有卸载干净,遗留了垃圾吧。
解决方案三:
问题已解决,待我回到住的地方再把详细的解决方法贴出来吧。不过,用VS里的服务资源管理器和SQL对象浏览器点击数据库属性,获取的连接字符串还是不行。
解决方案四:
哥,我也也到了类似的问题,能不能把你的解决方法贴出来啊
时间: 2024-09-17 00:59:37