_ConnectionPtr open失败求解

liuandsky 2013-08-23 11:34:27
创建:
m_pConnection.CreateInstance(__uuidof(Connection));
连接代码:
CString ConnectionString = _T("Provider=SQLOLEDB.1;Server=127.0.0.1;Database=dacsdb;uid=sa;pwd=881022");
m_pConnection->Open(ConnectionString , "", "", lOptions

CoInitialize(NULL)和CoUninitialize();我分别放在了类的构造和析构内,让他一直能用

我连接的是自己机器上的sqlserver2005,我打开sqlserver配置工具看了服务都开启了,但是就是连接失败。

在线等,求解!!!!!!!!!!!!!!!!


...全文
350 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy__Huang 2013-08-23
  • 打赏
  • 举报
回复
你这样改,试试看: CString ConnectionString = _T("driver={SQL Server};Server=127.0.0.1;Database=dacsdb;uid=sa;pwd=881022"); m_pConnection->Open(ConnectionString , "", "", lOptions
liuandsky 2013-08-23
  • 打赏
  • 举报
回复
open返回HRESULT值是-858993460
Shawn 2013-08-23
  • 打赏
  • 举报
回复
引用 11 楼 liuandsky 的回复:
我刚发现一个问题,我另外一台机器上的udl高级->访问权限不能编辑,默认都没有勾选,应该是这个原因,是我服务没开还是什么?
应该不是。我这儿也是灰色,不可编辑。 说明一点儿,你用udl能访问,那么就说明,udl所在这台机器,已经可以正常连接到udl中指定的那台SQL SERVER服务器上。 如果还有问题,可能是你程序字符连接串的原因。
liuandsky 2013-08-23
  • 打赏
  • 举报
回复
引用 10 楼 wwwwgou 的回复:
[quote=引用 8 楼 liuandsky 的回复:] 我找到问题了,我这个机器没有正确安装sqlserver,就不连接本机的sqlserver了。另一个问题又来了,我在另外一台机器上正确安装了sqlserver,我用udl在那获取了连接字符串,在我这台电脑上用源码连还是连接失败。
那可能就是楼主用的开发语言中连接串的格式问题了。不管用的是C++还是其它,从网上搜个关于C++的连接串,改一下即可。或者到C++专区问一下[/quote] 我刚发现一个问题,我另外一台机器上的udl高级->访问权限不能编辑,默认都没有勾选,应该是这个原因,是我服务没开还是什么?
Shawn 2013-08-23
  • 打赏
  • 举报
回复
引用 8 楼 liuandsky 的回复:
我找到问题了,我这个机器没有正确安装sqlserver,就不连接本机的sqlserver了。另一个问题又来了,我在另外一台机器上正确安装了sqlserver,我用udl在那获取了连接字符串,在我这台电脑上用源码连还是连接失败。
那可能就是楼主用的开发语言中连接串的格式问题了。不管用的是C++还是其它,从网上搜个关于C++的连接串,改一下即可。或者到C++专区问一下
liuandsky 2013-08-23
  • 打赏
  • 举报
回复
引用 8 楼 liuandsky 的回复:
[quote=引用 6 楼 wwwwgou 的回复:] #1.第一步,要选在“提供程序”标签中选驱动,连SQL SERVER的话选:Microsoft OLE DB Provider for SQL Server,然后点下一步,切换到“连接”标签,再设置服务器名称,登陆名,密码。点“测试连接”测试是否可连上
我找到问题了,我这个机器没有正确安装sqlserver,就不连接本机的sqlserver了。另一个问题又来了,我在另外一台机器上正确安装了sqlserver,我用udl在那获取了连接字符串,在我这台电脑上用源码连还是连接失败。[/quote] 我用sql server management studio连接那台机器正常的
liuandsky 2013-08-23
  • 打赏
  • 举报
回复
引用 6 楼 wwwwgou 的回复:
#1.第一步,要选在“提供程序”标签中选驱动,连SQL SERVER的话选:Microsoft OLE DB Provider for SQL Server,然后点下一步,切换到“连接”标签,再设置服务器名称,登陆名,密码。点“测试连接”测试是否可连上
我找到问题了,我这个机器没有正确安装sqlserver,就不连接本机的sqlserver了。另一个问题又来了,我在另外一台机器上正确安装了sqlserver,我用udl在那获取了连接字符串,在我这台电脑上用源码连还是连接失败。
Shawn 2013-08-23
  • 打赏
  • 举报
回复
#1.第一步,要选在“提供程序”标签中选驱动,连SQL SERVER的话选:Microsoft OLE DB Provider for SQL Server,然后点下一步,切换到“连接”标签,再设置服务器名称,登陆名,密码。点“测试连接”测试是否可连上
liuandsky 2013-08-23
  • 打赏
  • 举报
回复
引用 4 楼 liuandsky 的回复:
[quote=引用 3 楼 wwwwgou 的回复:] --#1.先用查询分析器连一下:Server=127.0.0.1;Database=dacsdb;uid=sa;pwd=881022 --#2.如果可以,建立一个文件文件,改名:xxx.udl,双击打开,配置其中的各项,来连接SQL SERVER,成功后,用记事本打开,把其中的字符串粘贴到你的程序里
我刚用你的地2个方法试了一下,连接成功了,但是有个地方不明白 我选的第一个出来的连接字符串Data Source=dBASE Files是这个,我记得这个不是应该填IP么,这个dBASE Files表示我连哪儿去了?[/quote] 还有出来的这个字符串我也没指定我要连接的数据库名称,不知道连的机器上哪个了 Provider=MSDASQL.1;Password=881022;Persist Security Info=True;User ID=sa;Data Source=dBASE Files
liuandsky 2013-08-23
  • 打赏
  • 举报
回复
引用 3 楼 wwwwgou 的回复:
--#1.先用查询分析器连一下:Server=127.0.0.1;Database=dacsdb;uid=sa;pwd=881022
--#2.如果可以,建立一个文件文件,改名:xxx.udl,双击打开,配置其中的各项,来连接SQL SERVER,成功后,用记事本打开,把其中的字符串粘贴到你的程序里


我刚用你的地2个方法试了一下,连接成功了,但是有个地方不明白

我选的第一个出来的连接字符串Data Source=dBASE Files是这个,我记得这个不是应该填IP么,这个dBASE Files表示我连哪儿去了?
Shawn 2013-08-23
  • 打赏
  • 举报
回复
--#1.先用查询分析器连一下:Server=127.0.0.1;Database=dacsdb;uid=sa;pwd=881022 --#2.如果可以,建立一个文件文件,改名:xxx.udl,双击打开,配置其中的各项,来连接SQL SERVER,成功后,用记事本打开,把其中的字符串粘贴到你的程序里
我花钱买的,结果没用上,太亏了 本系统采用ADO来访问SQL数据库,这里充分应用了C++类封装的功能,根据本系统应用的范围,将访问数据库的功能函数封装在一个类CMyDatabase。 正如前所述,ADO是访问数据库的一个方法,它提供了不同的接口。ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。 _ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。对于要返回记录的操作通常用_RecordserPtr来实现。而用_ConnectionPtr操作时要想得到记录条数得遍历所有记录,而用_RecordserPtr时不需要。 _CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,你可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果你只执行一次或几次数据访问操作,后者是比较好的选择。但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr接口执行存储过程和SQL语句。 _RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtrconnection成员变量,让它自己创建数据连接。如果你要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口 ,然后使用_RecordsetPtr执行存储过程和SQL语句。  根据这些,我们将数据库的各种操作封装到CMyDatabase类里。几个主要函数说明如下:

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧