ADO

本文详细介绍了如何在VC++中使用ADO(ActiveX Data Objects)进行数据库连接,包括添加类型库文件、初始化COM对象、声明及实例化连接对象,以及设置各种数据库类型的连接字符串。

1.添加ADO类型库文件

#import "C:\Program Files\Common Files\System\ADO\msado15.dll" 
no_namespace rename(
"EOF""EndOfFile")

 

程序在编译过程中,VC++会读出msado15.dll中的类型库信息,自动产生两个该类型库的头文件和实现文件msado15.tlh和msado15.tli(在您的Debug或Release目录下)。在这两个文件里定义了ADO的所有对象和方法,以及一些枚举型的常量等。我们的程序只要直接调用这些方法就行了

 

还可以在VC编译器的系统路径中进行添加:在“工具”->“选项”中弹出选项对话框,如下图所示:

 

则可以这样导入ADO类型库文件

#import<msado15.dll> no_namespace rename("EOF","adoEOF")

 

 不使用no_namespace属性

#import<msado15.dll> rename("EOF","adoEOF")

 

2.初始化COM对象

如果是控制台程序,则如下进行初始化:

CoInitialize(NULL);

 
CoUninitialize();

如果是基于MFC的程序,则可以如下进行初始化:

AfxOleInit();

 

3.声明和实例化一个连接对象

 

//方法1:声明和实例化一个连接对象

_ConnectionPtr pConnection(__uuidof(Connection));


//方法2:声明和实例化一个连接对象

_ConnectionPtr pConnection =NULL;

//ADODB::_ConnectionPtr pConnection =NULL;不使用no_namespace属性

HRESULT hr = S_OK;
hr
=pConnection.CreateInstance(__uuidof(Connection) );

//hr=pConnection.CreateInstance(__uuidof(ADODB::Connection) );不使用no_namespace属性

 

/****************************************************
  推荐使用第二种方法声明和实例化一个对象,因为如果
  出现错误,_com_ptr_t的构造函数不会返回一个失败的
  HRESULT,所以第一种方法无法测试创建ADO对象成功与否
****************************************************
*/

 

 4.建立与数据库连接

建立ADO数据库连接过程中,关键是设置好连接字符串

4.1.连接字符串的格式

连接字符串提供所要连接的数据库类型,数据库所处服务器,要访问的数据库,数据库访问的安全认证信息等,它的设置标准随着数据源的类型不同而不同:

1)ODBC Driver for Access

strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
        
"Dbq=c:\\DatabasePath\\dbaccess.mdb;Uid=;Pwd=;");

 

 

 2)ODBC Driver for SQL Server

 

//a.SQL SERVER认证方式
strConnection = _T("Driver={SQL Server};Server=MyServerName;"
        
"Trusted_Connection=no;"
        
"Database=MyDatabaseName;Uid=MyUserName;Pwd=MyPassword;");
//b.混合认证方式
strConnection = _T("Driver={SQL Server};Server=MyServerName;"
     
"Database=myDatabaseName;Uid=;Pwd=;");
//WINDOWS NT认证方式
strConnection = _T("Driver={SQL Server};Server=MyServerName;"
    
"Database=MyDatabaseName;Trusted_Connection=yes;");
//如果SQL SERVER运行在本地计算机上
strConnection = _T("Driver={SQL Server};Server=(local);"
        
"Database=MyDatabaseName;Uid=MyUserName;Pwd=MyPassword;");
//如果计算机上存在两个实例只需在服务名上加“\实例名“
/*

dbnmpntw Win32 Named Pipes dbmssocn Win32 Winsock TCP/IP
dbmsspxn Win32 SPX/IPX
dbmsvinn Win32 Banyan Vines
dbmsrpcn Win32 Multi-Protocol (Windows RPC)
更多信息请参见: Q238949.
*/
strConnection 
= _T("Driver={SQL Server};Server=130.120.110.001;"
     
"Address=130.120.110.001,1052;Network=dbmssocn;Database=MyDatabaseName;"
     
"Uid=myUsername;Pwd=myPassword;");

 

3).Driver for Oracle

strConnect = _T("Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;"
        
"Uid=MyUsername;Pwd=MyPassword;"); 4).ODBC Driver for MySQL

 

 

4)ODBC Driver for MySQL

 

//连接到本数据库:
strConnect = _T("Driver={MySQL ODBC 3.51 Driver};Server=localhost;"
     
"Database=MyDatabase;User=MyUserName;Password=MyPassword;Option=4;");
//连接到远程数据库,需要在SERVER参数指定服务名或IP地址,如果端口不是默认//端口3306,你必面指定。
strConnect = _T("Driver={mySQL ODBC 3.51 Driver};Server=MyRemoteHost;"
     
"Port=3306;Option=4;Database=MyDatabase;Uid=MyUsername;Pwd=MyPassword;");

 

DSN Connection

ODBC DSN


strConnect = _T("DSN=MyDSN;Uid=MyUsername;Pwd=MyPassword;");

 

 

OLE DB Provider

OLE DB Provider for SQL Server

 

strConnect = _T("Provider=sqloledb;Data Source=MyServerName;"
        
"Initial Catalog=MyDatabaseName;"
        
"User Id=MyUsername;Password=MyPassword;");

If you want to connect to a "Named Instance" (SQL Server 2000), you must to specify Data Source=Servere Name"Instance Name like in the following example:

strConnect = _T("Provider=sqloledb;Data Source=MyServerName\MyInstanceName;"
    
"Initial Catalog=MyDatabaseName;User Id=MyUsername;Password=MyPassword;");

 If you want to connect with a SQL Server running on the same computer, you must specify the keyword (local) in the Data Source like in the following example:

 

strConnect = _T("Provider=sqloledb;Data Source=(local);"
        
"Initial Catalog=myDatabaseName;"
        
"User ID=myUsername;Password=myPassword;");

To connect to SQL Server running on a remote computer (via an IP address):

 

strConnect = _T("Provider=sqloledb;Network Library=DBMSSOCN;"
        
"Data Source=130.120.110.001,1433;"
        
"Initial Catalog=MyDatabaseName;User ID=MyUsername;"

 

OLE DB Provider for MySQL

strConnection = _T("Provider=MySQLProv;Data Source=test");

 

OLE DB Provider for Oracle(from Microsoft)

 

strConnect = _T("Provider=MSDAORA;Data Source=MyOracleDB;User Id=myUsername;"
     
"Password=myPassword;");

 

 

OLE DB Provider for Oracle (from Oracle)

strConnect = _T("Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;"
        
"User Id=myUsername;Password=myPassword;");

 

 

 

 

 

转载于:https://www.cnblogs.com/NeuqUstcIim/archive/2008/09/05/1285402.html

08-20
### ADO(ActiveX Data Objects)使用指南:数据库连接与操作 ADO(ActiveX Data Objects)是微软提供的一组用于访问和处理数据的组件和对象模型,广泛应用于 ASP 和 VB 等开发环境中。它提供了一种标准的编程接口,用于与数据库进行交互,包括执行 SQL 查询、处理结果集、更新数据等操作。 #### 数据库连接 ADO 使用 `Connection` 对象来建立与数据库的连接。该对象支持多种数据库提供者,如 OLE DB、ODBC 等。在实际应用中,开发者需要根据数据库类型配置相应的连接字符串,以确保能够正确访问数据库文件或服务器。 例如,使用 ADO 连接到 Microsoft Access 数据库的代码如下: ```vbscript Dim conn Set conn = CreateObject("ADODB.Connection") ' 打开数据库连接 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;" ``` 此连接方式依赖于 Microsoft Jet OLEDB 提供程序,适用于本地 Access 数据库文件。如果使用远程服务器上的数据库,则必须确保拥有物理访问权限或由 Web 主机提供商协助配置[^4]。 #### 数据查询与结果处理 ADO 使用 `Recordset` 对象来执行查询并处理结果集。`Recordset` 支持对数据库查询结果进行遍历、排序、筛选等操作,并可与前端控件(如 DataGrid)绑定以实现数据展示。 以下是一个使用 ADO 查询数据库并输出结果的示例: ```vbscript Dim rs Set rs = CreateObject("ADODB.Recordset") ' 执行查询 rs.Open "SELECT * FROM Customers", conn ' 遍历结果集 Do While Not rs.EOF WScript.Echo rs("CustomerName") rs.MoveNext Loop ``` `Recordset` 提供了多种游标类型和锁定机制,允许开发者根据实际需求选择客户端或服务器端游标,以实现不同的数据访问模式[^1]。 #### 数据更新与事务处理 ADO 支持通过 `Recordset` 或直接执行 SQL 语句进行数据更新。在执行插入、更新或删除操作时,可以使用 `Command` 对象或直接调用 `Execute` 方法: ```vbscript conn.Execute "UPDATE Customers SET ContactName = 'John Doe' WHERE CustomerID = 1" ``` 此外,ADO 还支持事务处理,确保多个数据库操作的原子性和一致性: ```vbscript conn.BeginTrans On Error Resume Next conn.Execute "INSERT INTO Orders (CustomerID) VALUES (1)" conn.Execute "INSERT INTO OrderDetails (OrderID, ProductID) VALUES (100, 5)" If Err.Number = 0 Then conn.CommitTrans Else conn.RollbackTrans End If ``` #### ADO 与组件技术 ADO 是基于 ActiveX 技术构建的对象模型,其组件以 DLL 形式存在,支持跨平台、跨语言和跨网络的组件通信。通过 ActiveX 技术,组件可以被灵活调用并集成到不同的开发环境中,从而提高代码的复用性和系统的可维护性[^3]。 在实际开发中,虽然 ADO 提供了与控件绑定的便捷方式(如 ADO Data Control 和 DataGrid Control),但这种方式增加了不必要的开销,且支持的控件数量有限,因此更适合简单的数据绑定场景[^2]。 #### 数据库访问与 ADO 的演进 随着开发技术的发展,许多现代开发框架(如 ADO.NET、Entity Framework、Django ORM)已经取代了传统的 ADO 模式。这些框架通过 `DataSet`、`DataTable` 或对象关系映射(ORM)机制,提供更高效、灵活的数据访问方式,同时减少对底层数据库的直接操作需求。 尽管如此,ADO 仍然是许多遗留系统和 COM-based 应用中不可或缺的组成部分,尤其适用于需要快速构建 ASP 页面与数据库交互的应用场景。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值