使用ADO

1、导入库文件 

使用ADO前必须在工程的stdafx.h文件最后用直接引入符号#import引入ADO库文件,以使编译器能正确编译。代码如下: 
#import "C:Program Filescommon filessystemadomsado15.dll" no_namespace rename("EOF","EndOfFile") rename("BOF","FirstOfFile") 

ADO类的定义是作为一种资源存储在ADO DLL(msado15.dll)中,在其内部称为类型库。类型库描述了自治接口,以及C++使用的COM vtable接口。当使用#import指令时,在运行时Visual C++需要从ADO DLL中读取这个类型库,并以此创建一组C++头文件。这些头文件具有.tli 和.tlh扩展名,读者可以在项目的目录下找到这两个文件。在C++程序代码中调用的ADO类要在这些文件中定义。 

  程序的第三行指示ADO对象不使用名称空间。在有些应用程序中,由于应用程序中的对象与ADO中的对象之间可能会出现命名冲突,所以有必要使用名称空间。如果要使用名称空间,则可把第三行程序修改为: rename_namespace("AdoNS")。第四行代码将ADO中的EOF(文件结束)更名为adoEOF,以避免与定义了自己的EOF的其他库冲突。 

2、初始化COM环境 
(1)::CoInitialize(NULL); //初始化OLE/COM库环境 
:: CoUninitialize();//既然初始化了环境,当然就有必要释放他了 
(2)也可以调用MFC全局函数 
AfxOleInit(); 

3、三大对象的定义和创建实例 

(1) _ConnectionPtr pConnection("ADODB.Connection"); 
_RecordsetPtr pRecordset("ADODB.Recordset"); 
_CommandPtr pCommand("ADODN.Command"); 

(2) _ConnectionPtr pConnection; 
_RecordsetPtr pRecordset; 
_CommandPtr pCommand; 

pConnection.CreateInstance(__uuidof(Connection)); 
pRecordset.CreateInstance(__uuidof(Recordset)); 
pCommand.CreateInstance(__uuidof(Command)); 

(3) _ConnectionPtr pConnection; 
_RecordsetPtr pRecordset; 
_CommandPtr pCommand; 

pConnection.CreateInstance("ADODB.Connection"); 
pRecordset.CreateInstance("ADODB.Recordset"); 
pCommand.CreateInstance("ADODB.Command"); 

4、打开一个连接 
pConnection->Open(ConnectionString,"","",adModeUnknown);///连接数据库 

上面的连接字符串ConnectionString根据不同的数据源,分别对应不同的写法 
1)访问Access 2000 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassWord" 

2)访问ODBC数据 
" Provider=MADASQL;DSN=dsnName;UID=userName;PWD=userPassword;" 

3)访问Oracle数据库 
“Provider=MSDAORA;Data Sourse=serverName;User ID=userName;Password=userPassword;" 

3)访问MS SQL数据库 
"Provider=SQLOLEDB,Data Source=serverName;Initial Catalog=databaseName;User ID=userName;Password=userPassword;" 

4、执行SQL命令 
SQL命令比较多,但是不去考虑细节,这里只说出通用的方法 
CString strSQL;//定义SQL命令串,用来保存SQL语句 

strSQL.Format("SQL statement"); 

然后在每个要用到SQL命令串的方法中,使用strSQL.AllocSysString()的方法进行类型转换 

5、com的专用数据类型 

variant ,bstr ,SafeArray 

variant变量的范围包括很多,使用_variant_t 进行管理 
bstr是一种字符串变量,使用_bstr_t进行管理 

6、关闭连接 

if(m_pConnection->State)//不能多次关闭,否则会出现错误 
m_pConnection->Close(); 

7、结构化异常处理 
ADO封装了COM接口,所以需要进行错误处理 
如下例: 
HRESULT hr; 
try 

hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象 
if(SUCCEEDED(hr)) 

hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);///连接数据库 
///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改 为:Provider=Microsoft.Jet.OLEDB.3.51; } 

catch(_com_error e)///捕捉异常 

CString errormessage; 
errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage()); 
AfxMessageBox(errormessage);///显示错误信息 


8、错误原因的分析 
(1)不支持接口,可能是不能插入空值 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值