本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告

☆★☆★☆★☆★☆★☆
生活的点点记录,以及一些体会...........

喜欢是淡淡的爱,爱是深深的喜欢.

时间会见证一切.......................

欢迎大家指出错误,共同进步..........

期待中..............................

☆★☆★☆★☆★☆★☆


我的分类(专题)

日志更新

最新评论

留言板

链接

世纪音频

 

 


Blog信息
blog名称:
日志总数:162
评论数量:312
留言数量:0
访问次数:939693
建立时间:2005年5月17日




[Database]ADO数据库连接
原创空间

oceanblue 发表于 2009/3/25 9:13:20

1、导入库文件     使用ADO前必须在工程的stdafx.h文件最后用直接引入符号#import引入ADO库文件,以使编译器能正确编译。代码如下:#import "C:\Program Files\common files\system\ado\msado15.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("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());  AfxMessageBox(errormessage);///显示错误信息  } 8、错误原因的分析   (1)不支持接口,可能是不能插入空值


阅读全文(1665) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.094 second(s), page refreshed 144754062 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号