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

问题描述

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

ado-VS2013C++ADO连接自带SQLServer本地数据库,多步OLEDB操作错误的相关文章

远程连接阿里云SqlServer 2012 数据库服务器的图文教程

前言: 在使用 阿里云 上的一些产品时,遇到不少坑. 安装IIS 时,遇到因买的配置过低,虚拟内存不足,而导致 IIS 总是安装失败: 现在 在上面安装了个 Sql Sever 2012,远程老是 不能连接,百度找半天,终于能够连接上了. 实现步骤如下: 1. 找到 安全组配置,打开 安全组配置,点击配置规则,增加 地址段访问的 授权规则,Sql Server的默认端口时 1433 . 2. 服务器上 win + R  键入  compmgmt.msc ,打开 计算机管理,按照如图所示 设置.注

VB语言使用ADO连接、操作SQLServer数据库教程_vb

几年前学过的VB几乎忘光了,这几天复习了下.VB连接ADO数据库并不是非常难. 连接第一步(要仔细看) 对于小白来讲,这里的教程最详细,连接ADO数据库第一步,要添加什么部件呢?全称是Microsoft ADO Data Control 6.0 (SP6) (OLEDB) 部件. 在Microsoft ADO Data Control 6.0 (SP6) (OLEDB)部件里有一个名叫:Adodc数据控件,要将它添加.在Adodc数据控件数据位置中找到ACCES. 控件引用的方法(值指的是姓名)

asp.net学习之ado.net(连接模式访问)

原文:asp.net学习之ado.net(连接模式访问)    ado.net框架支持两种模式的数据访问: 连接模式(Connected)和非连接模式(disconnected).这一节介绍如何使用连接模式访问数据库中的数据,利用ADO.NET中的Connection,Command,DataReader来获取和修改数据库中的数据 1. 连接模式的数据访问      连接模式要使用到的三个核心类:      ● IDBConnection : 表示数据源的连接,所有Connection类的基类

教学体会: ADO.NET的连接式和断开式

ado|断开  关于ADO.NET的书籍和文章很多,在这里主要使用在我教学中给学生做演示的两个小例子,来比较ADO.NET的连接式和断开式,程序员一般不喜欢说教,下面就以代码说话: 连接式: SqlConnection sqlConn=new SqlConnection("server=.;database=pubs;user id=sa;password=;");SqlCommand sqlComm=new SqlCommand("select * from authors

ADO控件连接成功并在datagrid显示了,现在该怎么删除、添加数据库中的内容呢?

问题描述 ADO控件连接成功并在datagrid显示了,现在该怎么删除.添加数据库中的内容呢? ADO控件连接成功并在datagrid显示了,现在该怎么删除.添加数据库中的内容呢?有具体实例吗? 在添加一个button后,代码是直接使用sql语句还是? 本人菜鸟,往各位多多指正 解决方案 http://bbs.csdn.net/topics/390792732 解决方案二: 解决方案三: 数据库表先和本地表datatable绑定,之后datagrid上数据和本地表打交道

ADO.NET之连接池技术的使用详解_实用技巧

连接到数据库服务器通常需要一定的时间,且服务器也需要一定的资源来处理连接.Web应用程序有时处理成千上万的连接,需要相当多的资源来处理连接.ADO.NET具有连接池的特性,连接池的功能是保留一定数量的连接,当用户使用相同的连接字符串再次连接服务器时,ASO.NET将使用连接池中的连接而不用重新发起一次连接过程.当调用Close方法关闭连接时,ADO.NET将使用连接池中的连接而不用重新发起一次连接过程.当调用Close方法关闭连接时,连接将会返回到连接池中,下次再次调用Open方法时,将从连接池

java 本地连接外面的服务器sql2008数据库

问题描述 java 本地连接外面的服务器sql2008数据库 conn = DriverManager.getConnection( "jdbc:sqlserver://localhost:1433;DatabaseName=chumo", "dom", "123456"); System.out.println("建立连接成功!"); 上面是连接本地! 现在我要连接外面的服务器sql2008 现在该怎么改! 请各位大侠帮忙!

ADO与ADO.NET的区别与介绍_基础应用

1. ADO与ADO.NET简介ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用.高速度.低内存支出和占用磁盘空间较少,支持用于建立基于客户端/服务器和 Web 的应用程序的主要功能.但是ADO使用OLE DB接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构.众所周知.NET体系不同于COM体系,ADO.NET接口也就完全不同于ADO和OLE DB接口,这也就是说ADO.NET

sae-微信开发怎么连接本地数据库

问题描述 微信开发怎么连接本地数据库 微信开发中怎么连接本地数据库? sae中自带数据库,SaeMysql类的基本操作语法? 解决方案 你可以搜下微信链接本地数据库的方法,直接操作就可以了吧 解决方案二: 连不了 是因为本地数据库的那个 用户名 只有本地访问权限.. 你可以搜一下 本地数据库如何远程访问