所属类别:开发技术
文章作者:power_harbour
特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://orajc.blog.51cto.com/458434/99310为了在VC中使用Ado,需要在头文件中加入以下几行代码:#import "C:\\program files\\common files\\system\\ado\\msado15.dll" no_namespace rename("EOF", "adoEOF")#include "adoid.h"#include "icrsint.h"第一行的#import语句告诉编译器把此指令中的DLL文件引入到程序中,并从库中抽取其中的对象的类信息,并产生两个头文件包含在工程中.其中的no_namespace 用来对DLL的名称域进行隔离,最后的rename,把ADO中的EOF重新命名,避免和其他地方的定义的EOF产生冲突.第三行引入的头文件定义啦ADO2.0的类和接口标识第四行引入了ADO2.0的数据绑定扩展.例子代码如下: //数据库连接例子 AfxOleInit();//初始化 _ConnectionPtr m_pConnection; //_ConnectionPtr对象用来实现和数据源的连接 HRESULT hr = CoInitialize(NULL); m_pConnection.CreateInstance(__uuidof(Connection)); //_bstr_t ConnectionString = "DSN=Test;UID=sa;PWD=;";//DSN---Access //_bstr_t ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test.mdb";//NON_DSN---Access _bstr_t ConnectionString = "Provider=MSDASQL;DRIVER={SQL SERVER};SERVER=BILLGATES;DATABASE=NORTHWIND;UID=;PWD=;";//NON_DSN---SQL SERVER _bstr_t userName = ""; _bstr_t password = ""; _RecordsetPtr pRecordSet; _bstr_t bstrQuery("SELECT * FROM data"); _variant_t vNull; vNull.vt = VT_ERROR; vNull.scode = DISP_E_PARAMNOTFOUND; try { m_pConnection->Open(ConnectionString,"","",adModeUnknown); hr = pRecordSet.CreateInstance(__uuidof(Recordset)); if(SUCCEEDED(hr)) { pRecordSet->PutRefActiveConnection(m_pConnection); hr = pRecordSet->Open(_variant_t(bstrQuery),vNull,adOpenForwardOnly,adLockOptimistic,adCmdText); AfxMessageBox("连接数据库成功!"); if(!pRecordSet->adoEOF) { _variant_t name = pRecordSet->GetCollect("name");//获得指定列的数据 CString strName = (char*)_bstr_t(name);//转换数据类型 AfxMessageBox(strName); COleSafeArray vaFieldlist;//数据表字段名 vaFieldlist.CreateOneDim(VT_VARIANT,3); long lArrayIndex[1]; lArrayIndex[0] = 0; vaFieldlist.PutElement(lArrayIndex, &(_variant_t("name"))); lArrayIndex[0] = 1; vaFieldlist.PutElement(lArrayIndex, &(_variant_t("age"))); lArrayIndex[0] = 2; vaFieldlist.PutElement(lArrayIndex, &(_variant_t("address"))); COleSafeArray vaValuelist;//数据部字段值 vaValuelist.CreateOneDim(VT_VARIANT,3); lArrayIndex[0] = 0; vaValuelist.PutElement(lArrayIndex, &(_variant_t("liuy"))); lArrayIndex[0] = 1; vaValuelist.PutElement(lArrayIndex, &(_variant_t("23"))); lArrayIndex[0] = 2; vaValuelist.PutElement(lArrayIndex, &(_variant_t("beijing"))); for(int i = 0; i< 2; i++) { pRecordSet->AddNew(vaFieldlist,vaValuelist);//添加一行记录 } AfxMessageBox("添加数据成功"); } } } catch(_com_error &e) { _bstr_t bstrSource(e.Source()); _bstr_t bstrDescription(e.Description()); TRACE("Exception thrown for classes generated by #import"); TRACE("\tCode=%O81x\n",e.Error); TRACE("\tCode meaning = %s\n",e.ErrorMessage); TRACE("\tSource = %s\n",(LPCTSTR)bstrSource); TRACE("\tDescription = %s\n",(LPCTSTR)bstrDescription); AfxMessageBox(e.ErrorMessage()); }_ConnectionPtr 的Open()数的意义:ConnectionString:包含连接信息的字符串UID:访问数据库的用户名PSWD:访问数据库的口令Option:可选参数_RecordsetPtr的Open()函数:HRESULT Open(const _variant_t& source, const _variant_t& conneciton, enum CursorTypeEnum curdorType, enum LockTypeEnum lockType, long options)Source 参数是一个变体类型,她可以是一个Command的对象,一SQL对象,一个表名或一个存储过程,甚至是一个URL, 一个文件名,一个流对象.Conneciton也是一个变体类型,他可以是一个connection对象,也可以是一个指明连接目标的字符串.cursorType指明了数据集游标的类型.她可以是以下几个值:adOpenDynamic,adOpenForwardOnly,adOpenKeyset,adOpenStatic,adOpenUnspecified.lockType参数可以是下列值之一:adLockBachOptiomistic,adlockOptimistic,adLockPessimistic,adLockReadOnly,adLockUnspecified.Options:参数指明了第一个参数source的类型,其值可以是adCmdUnspecified,adCmdText,adCmdTable,adCmdStoreProc,adCmdUnknow,adCmdFile,adCmdTableDirect本文出自 “achilles” 博客,请务必保留此出处http://orajc.blog.51cto.com/458434/99310本文出自 51CTO.COM技术博客
相关信息· GIS三维地景仿真设计之雾化和纹理
· 3.6 插入文档
· 如何在PHP中使用Oracle数据库(5)
· GPG 小计
4352
44607
