VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 144|回复: 0

VC++高级班之数据库篇-[8,9]创建ADO与数据库的连接

[复制链接]
51_avatar_middle
online_admins Syc 发表于 2018-6-12 00:48:42 | 显示全部楼层 |阅读模式
①、使用 Connection 对象打开连接
在使用 Connection 对象进行打开连接操作时,基本的步骤如下:
⑴、【属性】设置 ConnectionString 连接属性,ConnectionString 是连接字符串,是由一些列分号间隔的语句的连接字符串组成,
用于指定连接数据源的信息,数据源不同,连接的字符串也不同;
⑵、【属性】设置 ConnectionTimeout 连接超时属性,单位为秒,默认是 15 秒,如果设置为 0,则 ADO 无限等待,直到连接打开;
⑶、【方法】调用 Open 方法,建立到数据源的连接,Open 方法的函数声明如下:
  1. HRESULT Open(_bstr_t ConnectionString,
  2.                                                 _bstr_t UserID,
  3.                                                 _bstr_t Password,
  4.                                                 long Options )
复制代码

                                               
参数意义如下:
ConnectionString 可选参数,类型为字符串,包含连接信息,如果设置了 ConnectionString 属性,那么其他的参数就可以不设置了;
UserID 可选参数,字符串,包含建立连接时所使用的用户名;
Password 可选参数,字符串,包含建立连接时所使用的密码;
Option 可选参数,决定该方法是在连接建立后(异步)还是连接建立之前(同步)返回,可以设定如下两个常量:
adConnectUnsepecified(同步)和 adAsyncConnect(异步);
⑷、【方法】调用 Close 方法,关闭与数据源的连接。
===================================================
②、着重说下连接字符串 ConnectionString:
不同的数据源可以要使用不同的连接字符串,例如:
MS SQL Server 2000:
"Provider=SQLOLEDB;DataSource=serverName;InitialCatalog=databaseName;UserID=userName;Password=userPassword;"

ODBC :
"DSN=datasource_name;Database=database_name;uid=user_name;pwd=password;"

Access :
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=databaseName;UserID=userName;Password=userPassword;"

具体可参考:http://www.connectionstrings.com/
备注:
SQL Server 2000 内部版本号:8.0
SQL Server 2005 内部版本号:9.0
SQL Server 2008 内部版本号:10.0
SQL Server 2012 内部版本号:11.0
SQL Server Native Client 是从 SQL Server 2005 以后的版本中才有的,
所以,下载对应的 SQL Server Native Client 的版本和 Connect String 连接字符串的设定要随之而改变。
SQL Server Native Client 微软官方下载地址:
http://www.microsoft.com/zh-CN/download/details.aspx?id=17943
=============================================================
③、数据库连接驱动:
客户端应用都是通过加载SQL的数据驱动程序做SQL连接的,目前客户端数据驱动库主要有3种:
1、MDAC(MS Data Access Components - Microsoft 数据访问组件)
这个组件包括传统的 ODBC 和 OLE DB 接口,主要是为非 .NET 的应用服务。这个组件历史悠久,目前一些老的程序 VB VC COM 还在使用他。
默认 Windows 自带 MDAC,因此无须特别安装。如果安装SQL客户端应用工具包,则会升级到一个更新的MDAC版本,
但这个组件自 SQL2000 以后,没什么大的变化,无法使用 SQL2005 或 2008 中一些新功能,例如数据库镜像、使用多个活动的结果集等等。

2、SQL Server Native Client
SQL Server Native Client 是在 SQL2005 中开始引入的用于 OLE DB 和 ODBC 的独立数据访问应用程序编程接口(API)。
除了 Windows 数据访问组件(WindowsDAC,以前为MDAC)提供的功能外,他还提供新功能。
SQL Server Native Client 可用于创建新应用程序或增强现有应用程序,使应用程序能够使用SQL2005中新功能,
例如多个结果集MARS,用户自定义数据类型UDT,查询通知,快照隔离和XML数据类型支持等。

建议:
如果使用新功能:SQL Server Native Client
无须使用新功能:MDAC

在一台没有安装过 SQL Server 2005 或 2008 的机器上是不会安装 SQL Server Native Client 的。
所以,如果某个客户端应用程序要直接使用 SQL Server Native Client 的方式去连接数据库,那么必须安装该 Client。

※※※ 备注:部分软件就算没有安装 SQL Server Native Client 也一样可以运行,
应该是服务器要有 SQL Server Native Client 或者 MDAC,
然后连接的话就连接服务器的 SQL Server Native Client 或 MDAC,所以客户端有没有都无关系。

3、Microsoft JDBC Provider 这个驱动程序专供 JAVA 程序使用,使用机制与 MDAC 和 SQL SERVER Native Client 不同,这里不做说明。
===================================================
④、配置 SQL Server 2005 支持远程连接:
内容详细见相关教程,该教程会发布到 VC驿站 - Vip技术交流群中,多谢大家的支持。
===================================================
⑤、连接数据库代码:
  1. _ConnectionPtr m_pConnection;

  2. HRESULT hr;
  3. try
  4. {
  5.         hr = m_pConnection.CreateInstance(__uuidof(Connection));
  6.         if (SUCCEEDED(hr)) {
  7.                 _bstr_t connectStr = _T("Provider=SQLNCLI;Server=192.168.0.100;Database=DVDRentDB;Uid=cctry;Pwd=www.cctry.com");
  8.                 //_bstr_t connectStr = _T("Provider=sqloledb;Data Source=192.168.0.100;Initial Catalog=DVDRentDB;User Id=cctry;Password=www.cctry.com");
  9.                 m_pConnection->ConnectionTimeout = 20;
  10.                 hr = m_pConnection->Open(connectStr, _T(""), _T(""), adConnectUnspecified);
  11.                 if (FAILED(hr)) {
  12.                         MessageBox(_T("打开与数据库的连接失败."));
  13.                         return TRUE;
  14.                 }
  15.         }else{
  16.                 MessageBox(_T("实例化 Connection 对象失败."));
  17.                 return TRUE;
  18.         }
  19. }
  20. catch (_com_error &e)
  21. {
  22.         _bstr_t bstrSource(e.Source());
  23.         _bstr_t bstrDescription(e.Description());
  24.         MessageBox(bstrDescription, bstrSource);
  25.         return TRUE;
  26. }
复制代码


关闭连接:
  1. if (m_pConnection && m_pConnection->State == adStateOpen)
  2. {
  3.         m_pConnection->Close();
  4. }
复制代码

===================================================
※※※ 小作业:
1、靠自己完成【配置 SQL Server 2005 支持远程连接】;
2、使用 udl 类型文件的方式连接SQL Server 服务器(自己到网上找资料);
------------------------------------- End -------------------------------------------

相关课程演示细节还请观看视频教程!
本套教程由VC驿站原创,提供视频教程+售后答疑服务!
VC驿站Vip会员售后答疑截图【持续更新】:http://www.cctry.com/thread-288054-1-1.html
教程介绍及详情请见:http://www.cctry.com/static/vip/index.html
VC驿站Vip会员详情请见:http://www.cctry.com/static/vip/index.html

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-6-24 16:58

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表