VC++中应用ADO访问二进制大数据项的研究

合集下载

VC中使用ADO的方法

VC中使用ADO的方法

VC中使⽤ADO的⽅法ADO中打开⼀个连接:pConnection->ConnectionString = "这⾥的字符串有下⾯四种写法"; //对连接字符串赋值pConnection->Open(ConnectionString,"","",adModeUnknown); //连接数据库第⼆三个参数分别为⽤户的ID与密码,因为在连接字符串ConnectionCstring中已经设置好了,这⾥可以为空。

第四个参数可以取下⾯两个参数:adAsyncConnect,异步打开数据库,在ASP中直接⽤16。

adConnectUnspecified,同步打开数据库,在ASP中直接⽤-1。

ConnectionString根据不同的数据源,分别对应不同的写法(要记下来很困难,可以在VB中利⽤ADO控件先连接好,再将其拷贝在VC中,这样不容易出错) 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;" 4)访问MS SQL数据库 "Provider=SQLOLEDB,Data Source=serverName;Initial Catalog=databaseName;User ID=userName;Password=userPassword;" 使⽤ADO开发应⽤程序有两种⽅法,⼀种是直接在应⽤程序中使⽤ADO数据控件,该⽅法最简单,⽆需编写⼀⾏代码即可实现对数据库的访问,另⼀种⽅法是直接使⽤ADO对象实现对数据库的操作,该⽅法较复杂,但可以让程序员更深⼊的控制数据库。

使用ADO技术读写数据库中的图形等二进制信息

使用ADO技术读写数据库中的图形等二进制信息

的� 路径 � � � � 信息, � � � 把真 � � � � 正 � � 的 二进 制 文 件 以 磁 盘 文件 的 方 众所周 知, A XD O ( AD O ) 是微软公 据 库本 身的大 小, 但是, 由 于 这 些 文 件存 在 磁 盘 上, 据库访 问 层 O L E D B P 一起 协 同工 作 , 以提供 � � � � � � � 数 据库 本身 外还 要维 护与 数据 库相关 的这 些文 件的 些 B L OB 字 段 提 供 了 两 种 方 法— — —G C 和A � � � � � � � C , 通过 它们 , 你可 以 像 读 写文 件 一 样, 把其 他文 件的 内容 写进去 读出 来。
’ 将数 据写 入数 据库 ” )
为 一个包含数 据 变 量, 而这些数据 (” � � � � D � � � � � � � � � � � � � � � � C = S .C O AD O D B .C � � � 在 � � � � � � 序中 � � � � � 使用 � � � � � � 的 � � � � 的实 例 C .O ” ={ M A D (� . 2 � AS P 程 AD O� A C 下面 是在 以 ) } ; = ”& S ” ) � � � � � � � � AS � � P中 � � � � AD � O 技术 将 图 像 文 件 写 入 .M P (” . ( ” AD O D B . � 数 据库 � � 例子 � � � 的核 � � � � 心语 � � � � 句。 � � S = S .C O < % R S ” ) � � � � � � � � � � � � � � � � . ” S ” , C , 2, 3 F B S � ( S S ) � � � � � . F = 1 L (S S ) (” ” ) � � � � � � � � � � � � ( � � � � � � � ,, � ) . . B = M S S 1 � � � � � � � � � � � � � � � � � � � � . : .C : C . B� S� = B S & B (A B ( ) ) � � � � � � � � � � � � � � � � � � � � � = : = N E R R C F .B .C = R .T B = TRU E % > 以下 是 如 何 把 上 面 程 序 传 入 数 据 库 的 数 据 读 出, 并 在客 户端 的浏 览 器 上 显 示存 入 数 据 库 的 核 心 语句 。

VC_基于ADO技术访问数据库

VC_基于ADO技术访问数据库

0引言在应用软件的开发中,常常需要编写访问数据库的程序代码,VC++提供了多种访问数据库的接口,如ODBCAPI、MFCODBC、DAO、OLEDB、ADO等,这些种数据库访问技术各有特点,许多相关书籍中都有介绍,在此就不赘述了。

在这些数据库访问技术中,ADO(ActiveXDataObjects)技术无疑是最高效的也是最有前途的数据库访问技术,ADO是建立在OLEDB底层数据库访问技术基础上的高级编程接口,由于它具有强大的数据处理功能和极其简单、易用的特点,因而得到了广泛的应用。

1ADO对象与编程环境1.1ADO对象ADO数据库接口是基于对象的集合,ADO对象包括Con-nection对象、Command对象、Recordset对象、Field对象、Parame-ter对象、Property对象和Error对象等,其中Connection、Com-mand和Recordset三个对象是主体对象,它们可以被独立创建和释放。

Connection对象用来建立和维护与数据源的连接,对数据源的任何操作都需要一个Connection对象。

Recordset对象包含执行数据库操作后返回的一个记录集,通过该对象可以浏览和更新数据库中保存的记录。

在VC应用程序中,我们只需使用Connection对象建立与数据源的连接,然后通过Recordset对象就可以对结果记录集进行浏览、更新等操作。

1.2ADO编程环境在VisualC++程序中使用ADO对象,首先需要导入ADO动态链接库。

引入动态链接库文件的方法是在创建的VC工程的stdafx.h头文件中添加如下代码:#import"C:\ProgramFiles\CommonFiles\System\ado\msado15.dll"\no_namespacerename("EOF","adoEOF")根据Windows操作系统版本不同动态链接库文件可能是msado10.dll、msado15.dll或msado20.dll。

VC中使用ADO技术访问数据库

VC中使用ADO技术访问数据库

接选项 , 用于指定 C n et n 象对数据 的更新许可权 。 o nc o 对 i 常用 的连接方式有 以下几种: () 1 通过 J T数据库 引擎 对 A C S 00数据 库 的 E C E S 20
连接 :

_
该语句声明在工程 中使用 A O, 不使 用 A O的名字 D 但 D 空间, 并且 为了避 免常数冲突, 将常数” O ” E F 改名”dE P 。 aoO '
要 使 用 A O 对 象 访 问数 据 库 ,必 须 在 工 程 的 s a . D t fh d x 文 件 里 用 直 接 引 入 符 号 ip r 引入 A O 库 文 件 , 以使 编 #m ot D
_

Us r D, b t t P sw r ,ln p i s el s _ as od o g O t n ) r o
中 图分 类号 : r 31 .3 P 11 文献 标识 码 : A 文章 编 号 :0 2 2 2 2 0 0 — o 2 0 1 0 — 4 2( 0 8) 1 0 4 — 2
Usn i gADO c n lg t b s c s Te h oo yi Daa a eAc es nVC n i
这样 不需 添 加 另 外 的 头 文 件 , 可 以使 用 A O 接 口 了。 就 D
应用程序在调用 A O前, D 必须初始化 C M库环境 。 O 在 MF C应用程序里 ,一个 比较好的方法 是在应用程序主类 的
33 O A L . R C E数 据 库 物 理 备 份 专 用 策 略
译器能正确编译。代码 如下所示 :
#m ot ipr
no
_
c ̄rga fe ̄ m n fek s m om a o . : orm d s o mo d s yt  ̄dk sdl d ' s e 5

在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。

在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。

在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。

收藏在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。

作者:邵盛松2009-09-05前言1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇《AppendChunk and GetChunk Methods Example (VC++)》,原文地址是/en-us/library/ms807920.aspx。

还有上有一篇文章《使用ADO实现BLOB数据的存取-- ADO开发实践之二》,原文地址是/document/viewdoc/?id=252我在这篇博文当中增加了对BLOB(Binary)数据的存储,读取代码的分析。

2关于BLOB(Binary)数据的修改,我试验过多种方法,这个问题也花了比较长的时间才得到解决,原来的方法是从文件读取的数据,将更改的数据转化为CString类型,然后采用SQL的UPDATE语句进行数据的更新。

后来在CSDN论坛上得到了vieri_ch的帮助,问题得到了比较好的一种解决方案。

二实现方法:1 BLOB(Binary)数据的存储,将一个文件存储到数据库。

存储部分代码分析写的比较详细,因为这里面得一些COM 结构和API需要说明一下m_pRs为_RecordsetPtr类型CFile fileAdd;if(fileAdd.Open(要存储文件的路径,CFile::modeRead)==0) //打开文件return;_variant_t varChunk;long nLength = fileAdd.GetLength();BYTE* pbuf;pbuf = new BYTE[nLength];if(pbuf==NULL)return;fileAdd.Read(pbuf,nLength);BYTE *pBufEx;pBufEx = pbuf;SAFEARRAY* psa;SAFEARRAYBOUND rgsabound[1];rgsabound[0].lLbound = 0;rgsabound[0].cElements = nLength;psa = SafeArrayCreate(VT_UI1, 1, rgsabound);for (long i = 0; i < nLength; i++)SafeArrayPutElement(psa,&i, pBufEx++);V ARIANT varBLOB;varBLOB.vt = VT_ARRAY | VT_UI1;varBLOB.parray = psa;m_pRs->ADOFields->GetItem(_variant_t("BLOB类型字段的名称"))->AppendChunk(varBLOB);m_pRs->Update();m_pRs->Close();在代码中有一个SAFEARRAY和SAFEARRAYBOUND类型,该类型在头文件OAIdl.h中定义typedef struct tagSAFEARRAY{USHORT cDims;USHORT fFeatures;ULONG cbElements;ULONG cLocks;SAFEARRAYBOUND rgsabound[ 1 ];}SAFEARRAY;SAFEARRAY结构体中包含了SAFEARRAYBOUND类型。

ADO在VC中的应用

ADO在VC中的应用

ADO在VC++中的应用摘要介绍了ADO的特点和在VC++中如何通过ADO开发数据库应用程序。

ADO是开发访问OLE数据库应用程序所利用的一种数据库访问组件,是一种能够访问各类数据类型的连接机制。

它不仅能够通过OLEDB、ODBC访问数据库,还能够利用几乎任何一种数据源,如SQLServer、Oracle、Access、Excel和文本文件、图形文件等。

ADO 基于OLEDB,提供统一的数据访问接口,利用简单,容易把握。

关键词ADO;数据库;应用程序的开发;VC++1引言ADO是Microsoft公司新的数据访问技术,由于它是基于OLEDB接口上实现的COM对象,其性能和易用性都达到了极佳水平。

ADO并非与数据库直接打交道,而是要通过ODBC驱动程序或OLEDB连接字符串来操作数据库。

ODBC或OLEDB是应用程序与数据库进行连接通信的接口,其作用是将特定类型数据库中的数据变换为标准而能统一操作的数据源。

利用ADO对象并通过ODBC或OLEDB,能够实现对任意数据库的存取和访问。

ADO模型包括7个对象,要紧对象有3个:Connection、Command和Recordset,能够被独立创建和释放。

另外,还包括其他4个集合对象:Fields、Errors、Parameters和Properties。

一个典型的ADO应用程序利用Connection对象成立与数据源的连接,然后用一个Command 对象给出对数据库操作的命令,如插入数据或查询数据等,而Recordset用于对结果集进行保护或阅读等操作。

其中Command命令所利用的语言与低层所对应的OLEDB数据源有关,不同的数据源能够利用不同的命令语言,关于关系数据库,通常利用SQL作为命令语言。

2VC++中利用ADO开发数据库应用程序一样步骤在VC++中利用ADO开发数据库应用程序一样包括以下步骤:(1)初始化COM库,引入ADO库概念文件。

(2)用Connection对象连接数据库。

使用ADO实现vc中二进制文件数据的存取

使用ADO实现vc中二进制文件数据的存取

使用ADO实现vc中二进制文件数据的存取(以图像在数据库中的存取为例)实现方法简述关键代码如下:1、保存图片数据到数据库以下是代码片段:查看源代码拷贝至剪贴板打印代码1.//JPG图片保存到数据库2.try3. {4. _RecordsetPtr pRecordset;5. pRecordset.CreateInstance(__uuidof(Recordset));6. pRecordset->Open("SELECT * FROM jpg",_variant_t((IDispatch*)pConnection),adOpenStatic,adLockOptimistic,adCmdTe xt);7. pRecordset->AddNew();8. pRecordset->Fields->Item["jpgid"]->Value = (_variant_t)m_JPGId;//jpgid9. VARIANT pvList;10. SetPictureToVariant(pvList,(unsigned char *)m_pJPGBuffer);11. pRecordset->Fields->Item["jpgimage"]->AppendChunk(pvList); //JPG图像文件12. VariantClear(&pvList);13.14. pRecordset->Update();15. pRecordset->Close();16. AfxMessageBox("JPG图像保存成功!");17. m_JPGId == "";18. UpdateData(false);19. }20.catch(...)21. {22. AfxMessageBox("数据库读取失败");23.return;24. }其中SetPictureToVariant如下:以下是代码片段:查看源代码拷贝至剪贴板打印代码1.void CBMPinDBDlg::SetPictureToVariant(VARIANT &pvList, unsigned char *sPicture)2. {3. SAFEARRAYBOUND saBound[1];4. saBound[0].cElements = m_nFileLen;5. saBound[0].lLbound = 0;6. SAFEARRAY *pSA = SafeArrayCreate(VT_UI1, 1, saBound);7.for (long l = 0; l < (long)m_nFileLen; l ++)8. {9. SafeArrayPutElement( pSA, &l, (void*)&sPicture[l]);10. }11. VariantClear(&pvList);12. pvList.vt = VT_UI1 | VT_ARRAY;13. pvList.parray = pSA;14. }2、从数据库读取图像文件并且显示在界面以下是代码片段:查看源代码拷贝至剪贴板打印代码1.//从数据库里取JPG图像文件2.try3. {4. _RecordsetPtr pRecordset;5.char sSql[129];6. sprintf(sSql,"SELECT *FROM jpg WHERE jpgid=’%s’",m_JPGId);7. pRecordset.CreateInstance(__uuidof(Recordset));8. pRecordset->Open(sSql,_variant_t((IDispatch*)pConnection),adOpenStatic,adLockOptimistic,adCmdText);9.if (pRecordset->adoEOF)10. {11.CString str;12. str.Format("没有JPGid为: %s 的JPG图像!",m_JPGId );13. AfxMessageBox(str);14. Invalidate();15. m_JPGId = "";16. UpdateData(false);17. m_EidtJPGId.SetFocus();18.return;19. }//关键代码段:20. _variant_t pvList ;21.long lDataSize = pRecordset->GetFields()->GetItem("jpgimage")->ActualSize; //用这个方式获得二进制的长度22. m_nFileLen = (DWORD)lDataSize;23.if(lDataSize > 0)24. {25. _variant_t varBLOB;26. varBLOB = pRecordset->GetFields()->GetItem("jpgimage")->GetChunk(lDataSize); //获取二进制的内容27.//把二进制格式的图片转为图片格式28.try29. {30.if(varBLOB.vt == (VT_ARRAY | VT_UI1)) //考察获得的数据是不是单字节的SAFEARRAY31. {32.if(m_pJPGBuffer = new char[lDataSize+1]) //始终没明白这里为什么要+1? 这里是为了’\0’?33. {34.char *pBuf = NULL;35. SafeArrayAccessData(varBLOB.parray,(void **)&pBuf); //使pBuf指向二进制的数据内容36. memcpy(m_pJPGBuffer,pBuf,lDataSize); //数据拷贝,m_pJPGBuffer有了这块值37. SafeArrayUnaccessData (varBLOB.parray); //关闭数据的访问权限38. m_nFileLen = lDataSize;41.HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, m_nFileLen );42.LPVOID lpBuf = ::GlobalLock( hMem );43. memcpy(lpBuf,m_pJPGBuffer,m_nFileLen); //又拷贝了一份?44.45. ::GlobalUnlock( hMem );46.47.if ( CreateStreamOnHGlobal( hMem, TRUE, &pStream ) !=S_OK )48.return ;49.50.if ( OleLoadPicture( pStream, m_nFileLen, TRUE, IID_IPicture, ( LPVOID * )&pPicture ) !=S_OK )51.return ;52.53. Invalidate();//在界面显示54. }55. }56. }57.catch(...)58. {59. AfxMessageBox("从数据库中读取jpg图像有错!");60.return;61. }62.63. }64.65. }66.catch(...)67. {68. AfxMessageBox("数据库读取失败");69.return;70. }具体的程序请参考附带的例子,例子里面有详细的注释。

VC中使用ADO控件的基本功能

VC中使用ADO控件的基本功能

VC中使用ADO控件的基本功能ADO(ActiveX Data Objects)是一组可以访问数据库的组件,它提供了一种统一的接口,允许开发者使用不同的编程语言对各种类型的数据存储进行访问和操作。

在VC中使用ADO控件可以方便地进行数据库操作,本文将介绍ADO的基本功能及相关用法。

1.引入ADO库在VC项目中使用ADO之前,首先需要引入ADO库。

可以通过以下步骤引入ADO库:a)打开VC中的项目;b)选择“项目”->“属性”;c)在属性对话框中选择“配置属性”->“常规”->“使用MFC”;d)在“使用MFC”中选择“使用共享DLL”,并点击“应用”;e)在属性对话框中选择“配置属性”->“链接器”->“输入”;f) 在“附加依赖项”中加入“odbc32.lib”和“odbccp32.lib”;g)点击“应用”和“确定”。

2.连接数据库使用ADO控件前,需要建立与数据库的连接。

连接数据库常用的一种方法是使用连接字符串。

连接字符串是一串字符,包含了数据库的相关信息,如数据库类型、地址、用户名、密码等。

可以使用以下代码建立与数据库的连接:```cpp#include <windows.h>void ConnectToDatabase_ConnectionPtr pConn;HRESULT hr = pConn.CreateInstance(__uuidof(Connection));if (SUCCEEDED(hr))_bstr_t connStr = "Provider=SQLOLEDB;DataSource=YourServerName;Initial Catalog=YourDatabaseName;UserId=YourUserId;Password=YourPassword;";hr = pConn->Open(connStr, "", "", adConnectUnspecified);if (SUCCEEDED(hr))//连接成功,可以进行数据库操作}}```在代码中,使用_ConnectionPtr表示连接对象,CreateInstance函数创建连接对象的实例,并使用Open函数打开数据库连接。

VC环境下数据库ADO开发技术的应用

VC环境下数据库ADO开发技术的应用

置可方便 的 实现 要 求的功 能 , 主要介 绍 了其对 象和 响应 的 函数 和操 作. 关键词 A O; C; D V 数据 库
中图号 r3 I ’ P
O 引言
Vsa C++ i l u 提供了多种开发数据库的技术 , 包括 : D C D O、 D O E D 、 D ( cvX D t O B 、 A R O、 L B A O A te a i a O j t等. bc e ) 在这些数据开发技术 中, D A O通过访问 O E D L B数据提供程序来进行的, 提供了一种对 O E L D B数据库提供程序简单的高层访问接 口. D A O技术提供了如同 D O一样的采用对象模型的数据库访 A 问技术 , 是较新的技术 , 速度快 , D O和 R O更加灵活, 比 A D 有取代 D O和 R O的趋势. A D 并且编程相对 简单 , 用更加 广泛 . 应
收稿 日期 : 0 0 3 2 7— 1— 1 0
作者简介 : ,94年生 , 男 17 工程 师, 河北新乐 , 00 0 70 5维ຫໍສະໝຸດ 资讯 第1 期 宗胜强
刘振宇


V C环境下数据库 A O开发技术的应用 D
9 5
Re o d e . e o r e, t e n e to Cu s r pe, o k p Op i n c r s t Op n S u c Ac i Co n cin, ro Ty v L c Ty e, to s
Vo . 5 No 1 12 . Ma c 2 0 rh 0 7
V C环 境 下数 据 库 A O开 发 技 术 的应 用 D
宗胜强 刘振 宇 王 清
1河北新乐市医院设备科 ; 2河北科 技大学机械 电子工程学院

在VC++中使用ADO

在VC++中使用ADO

在VC++中使用ADO访问Access数据库摘要ADO具有易于使用、速度快、内存支出少和磁盘痕迹小的有点。

并且提供了轻量高性能的接口。

ADO(ActiveEx Data Object)是Microsoft数据库应用程序开发接口,是建立在OLE DB之上的高层数据访问技术。

即使我们对OLE DB 和COM不了解,也能轻松使用ADO,因为它非常的简单易用,甚至比以前的ODBC API、DAO都要容易使用,并不适灵活性。

同时它也提供了多语言访问技术包括Visual C++,Visual Basic和VBA等。

使用ADO编程一般有以下几个步骤组成:(1)连接到一个数据源;(2)打开指定的数据集;(3)执行所需的查询;(4)把数据检索到一个能够在C++代码中很容易访问的对象中;(5)提供检测错误的一般方法。

2.ADO对象的详细介绍如下表:使用Command对象查询数据库并返回 Recordset 对象中的记录,以便执行大量操作或处理数据库结构。

可以使用Command对象的集合、方法、属性进行下列操作:∙使用CommandText属性定义命令(例如,SQL 语句)的可执行文本。

∙通过Parameter对象和Parameters集合定义参数化查询或存储过程参数。

∙可使用Execute方法执行命令并在适当的时候返回Recordset对象。

∙执行前应使用CommandType属性指定命令类型以优化性能。

∙使用Prepared属性决定提供者是否在执行前保存准备好(或编译好)的命令版本。

∙使用CommandTimeout属性设置提供者等待命令执行的秒数。

∙通过设置ActiveConnection属性使打开的连接与Command 对象关联。

∙设置Name属性将Command标识为与Connection对象关联的方法。

∙将Command对象传送给Recordset的Source属性以便获取数据。

注意如果不想使用Command对象执行查询,请将查询字符串传送给Connection对象的Execute方法或Recordset对象的Open方法。

VC++通过ODBC访问二进制大数据项(BLOB)

VC++通过ODBC访问二进制大数据项(BLOB)

完全取消, 要么不做, 要么全做 , 用于保证数据之间的完整性 , 最大限度防止“ 数据的出现, 脏” 维持
数 据库 的整体性 。
C eo s ( R cr e 数据集) dt 类是从 V C++中访问数据库技术的核心, 从理论上讲, 数据集类代表了对数 据库中的一部分数据的实际操作 , 该类封装了有关数据控制和访问的有关动作序列。 在该类中内置了 个 C a bs 类 的指针 ,提供 了对动 态集 、快照 以及事务 处 理的支持 。通 过该类 ,可以在 当前 记 录集 Dt ae a
收 稿 日期 : 0 6— 8—1 20 0 0
作者简 介 :张韶峰 (97一) 男 , 16 , 河南 洛 阳人 ,高级程 序员 。
1 O B D C技术简介
O B D C是 为最大 的互用性 而设计 ,一个应 用程序 可 以用 相 同 的源代码 访 问不 同的数据 库 管理 系统
(B S , D M ) 数据库应用程序调用 O B D C接 口中的函数 , D C接 口的驱动程序提供对数据库的底层访 OB
ห้องสมุดไป่ตู้
洛 阳师范学院学报 2 0 07年第 2期
・ 1・ 7
3 关于 B O 二进制大数据项 ) 据 L B( 数
C eo st R cr e 的派生类通过 R F机制 自动取得数据并转换成 V d T C++ 数据类 型, 或者把输入 的数据
保存 到数据 库 。在 这种转 换 中 ,比较复 杂 的一种数 据类 型是 B O ( i r LreO jc,二进 制 大型数 L B Bn y ag bet a
重点介 绍 MF D C的相 关类 , 通过 示例 代码 完整描 述 了处理二进 制 大数据 项( L B) CO B 并 BO

ADO技术在VC编程中的研究及应用分析

ADO技术在VC编程中的研究及应用分析
摘 要 A D O技术作 为现今数据 库应用开发的趋势 ,应 用范围涵盖从 一层 到多层数 据库 应用的解决方案以及基 于 We b的数据 驱动解决方案等方 面。文中基 于微软公 司 V i s u a l C+ +开发平 台,分析研 究了 A D O的工作原理及使 用过程 , 实现 了高速 、通 用的数据 访问。最后 ,给 出了两种 A D O技 术应 用方法 。经过 实践 ,确 定 A D O是 一种优 化、 高性 能、 高兼容的数据库访 问手段 。
Ab s t r a c t Th e a p p l i c a t i o n o f Da t a b a s e i s b e c o mi n g i n c r e a s i n g l y i mp o r t a n t i n c o r p o r a t e a n d c o mme r c i a l o p e r a — t i o n s . As t h e c o r e t e c h n o l o g y o f t o d a y ’ S d a t a b a s e a p p l i c a t i o n d e v e l o p me n t , ADO c o v e r s ma n y a s p e c t s ,i n c l u d i n g t h e s o l u t i o n s o f d a t a b a s e a p p l i c a t i o n f r o m o n e l a y e r t o Mu l t i . 1 a y e r s a n d t h e s o l u t i o n s o f We b — b a s e d d a t a — d iv r e n . Ba s e d o n Mi c r o s o t f Vi s u a l C ++ d e v e l o p me n t k i t .t h i s p a p e r a n a l y s e s t h e wo r k i n g p in r c i p l e s a n d p r o c e s s e s o f ADO f o r h i g h ・ s p e e d a n d u n i v e r s l a d a t a a c c e s s . Fi n ll a y. t wo a p pl i c a t i o n s o f ADO a r e p u t f o r wa r d. , I ' h e p r a c t i c e c o n i f r ms t h a t ADO i s a n o p t i mi z e d me a n s t o d a t a b a s e a c c e s s wi t h g o o d p e r f o m a r n c e a n d h i g h c o mp a t i b i l i t y . Ke y wo r d s ADO ; d a t ba a s e; Vi s u l a C++; d a t a b a s e a c c e s s

ADO技术及其在VisualC_环境下数据库编程中的应用

ADO技术及其在VisualC_环境下数据库编程中的应用

第25卷第4期通化师范学院学报V ol.25№4 2004年4月JOURNA L OF T ONG H UA TE ACHERSπC O LLEGE Apr.2004ADO技术及其在Visual C++Ξ环境下数据库编程中的应用赵法信(通化师范学院教务处,吉林通化134002)摘 要:介绍了ADO对象模型的原理,对其在Visual C++环境下数据库编程中的应用作了较为系统的研究,并给出了相应的程序代码.关键词:ADO;Visual C++;应用;数据库编程中图分类号:TP313 文献标识码:A 文章编号:1008-7974(2004)04-0029-041 概述ADO,即ActiveX Data Object,是Micros oft最新的对象层次上的数据操作技术.它建立在O LE DB之上,并封装了O LE DB程序中大量使用的C OM接口,为操作O LE DB数据源提供了一套高层次的自动化接口,从而大大简化了O LE DB的操作.尽管在Visual C++中已经提供了多种多样的数据库访问技术(如ODBC、MFC ODBC、DAO),但由于ADO 中使用了C OM接口技术,能够直接对数据的驱动程序进行访问,从而具有比其它数据库访问技术更高的数据访问效率.同时,与其它访问技术不同,ADO技术对对象之间的层次和顺序关系要求不是太严格.如在程序开发过程中,不必先建立连接,然后才产生记录对象,而可以在使用记录的地方直接使用记录对象.这种模型有力的简化了程序设计,增强了程序的灵活性.2 ADO原理Micros oft新近推出的UDA(Universal Data Access,一致数据访问)技术的两层标准接口之一.其中O LE DB 是系统级的编程接口,ADO是应用层的编程接口,它对O LE DB进行了封装.从图1中我们可以看出,应用程序既可以通过ADO访问数据也可以直接通过O LE DB访问数据,而ADO则通过O LE DB访问底层数据.从图1我们也看到了ADO实际上是O LE DB的应用层接口,这种结构也为一致的数据访问接口提供了很好的扩展性,而不再局限于特定的数据源,因此,ADO可以处理各种O LE DB支持的数据源.图1 UDA的层次结构图如图2所示,在ADO的对象模型中,主体对象只有3个:C onnection、C ommand和Recordset,其他4个集合对象Errors、Properties、Parameters和Fields分别对应Error、Property、Parameter和Field对象,整个ADO对象模型就由这些对象组成.一个典型的ADO应用使用C onnection对象建立与数据源的连接,然后用一个C ommand对象给出对数据库操作的命令,比如查询或者更新数据等,而Recordset用于对结果集数据进行维护或者浏览等操作.需注意的是C ommand命令所使用的命令语言与底层所对应的O LE DB数据源有关,不同的数据源可Ξ收稿日期:2003-03-20作者简介:赵法信(1974-),男,通化师范学院工程师,东北大学信息学院在读硕士.以使用不同的命令语言.图2 ADO对象模型3 ADO技术在Visual C++环境下数据库编程中的应用在Visual C++环境下开发基于ADO的数据库应用程序一般使用如下过程操作数据源中的数据(1)引入ADO库文件,初始化C OM库环境1)引入ADO库文件使用ADO前必须在工程的stdafx.h文件里用#im port引入ADO库文件,以使编译器能正确编译.代码如下所示:#im port”c\program files\comm on files\system\ado\msado15.dll”no-namespaces rename(”E OF”adoE OF”)这行语句声明在工程中使用ADO,但不使用ADO的命名空间,并且为了避免常数冲突,将常数E OF改名为adoE OF.现在不需添加另外的头文件,就可以使用ADO接口了.这一语句的最终作用同我们熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh和ado15. tli两个C++头文件来定义ADO库.需注意的是,msado15.dll的引入路径应根据实际情况而定.2)初始化C OM库环境因为ADO库是一组C OM动态库,这就意味应用程序在调用ADO前,必须初始化C OM库环境.在MFC 应用程序里,这项工作通常应在CWinApp::InitInstance()的重载函数中完成,代码如下: BOO L CADOApp::InitInstance(){if(!A fxOleInit()){A fxM essageBox(”O LE初始化出错!”);return FA LSE;}……}(2)创建C onnection对象并连接数据库首先我们需要添加一个指向C onnection对象的指针-C onnectionPtr m-pC onnection;下面的代码演示了如何创建C onnection对象实例及如何连接数据库并进行异常捕捉.v oid CAdoDlg::OnC onnect(){HRES U LT hr;-bstr-t s ource(”Provider=S Q LO LE DB;server=SY STE M;uid=sa;pwd=sa;database=northwind”);-bstr-t user(””);-bstr-t pwd(””);try{hr=m-pC onnection.CreateInstance(-uuidof(C onnection));//创建C onnection对象if(S UCCEE DE D(hr)){hr=m-pC onnection->Open(s ource,user,pwd,adM odeUnknown);//连接数据库}}catch(-com-error e)//捕捉异常A fxM essageBox(e.ErrorM essage());//显示错误信息}}在这段代码中我们是通过C onnection对象的Open方法来进行连接数据库的,下面是该方法的原型:HRE2 S U LT C onnection15::Open(-bstr-t C onnectionS tring,-bstr-t UserID,-bstr-t Passw ord,long Options)其中C onnectionString为连接字符串,UserI D是用户名,Passw ord是登陆密码,Options是连接选项,用于指定C onnection对象对数据的更新许可权.(该原型的详细解释请查阅[5])下面是一些我们常用的数据库连接方式1)通过J ET数据库引擎对ACCESS2000数据库的连接m-pC onnection->Open(”Provider=M icros oft.Jet.O LE DB.4.0;Data S ource=C:\fact.mdb”,””,””,adM odeUnknown);2)通过DS N数据源对任何支持ODBC的数据库进行连接m-pC onnection->Open(”DS N=N orthW ind;UID=sa;PW D=;”,””,””,adM odeUnknown);3)不通过DS N对S Q L SERVER数据库进行连接m-pC onnection->Open(”Provider=S Q LO LE DB;server=SY STE M;uid=sa;pwd=sa;database=northwind”,””,””,adM odeUnknown);(3)利用建立好的连接,通过C onnection、C ommand对象执行S Q L命令,或利用Recordset对象取得结果记录集进行查询、处理.为了取得结果记录集,我们首先需要定义一个指向Recordset对象的指针,定义如下:-RecordsetPtr m-pRecordset;接着为其创建Recordset对象的实例:m-pRecordset.CreateInstance(-uuidof(Recordset));S Q L命令的执行可以通过C onnection、C ommand或Recordset对象来进行,由于篇幅原因,在这里我们主要阐述如何利用Recordset对象的Open方法来实现对记录集的各种操作.Open方法的原型如下:HRES U LT Recordset15::Open(const-variant-t&S ource,const-variant-t&ActiveC onnection,enum Curs orT ypeEnum Curs orT ype,enum LockT ypeEnum LockT ype,long Options)其中S ource是数据查询字符串;ActiveC onnection是已经建立好的连接(在这里需要用C onnection对象指针来构造一个-variant-t对象);Curs orT ype为光标类型,LockT ype为锁定类型,Options表示S ource中内容的类型,其类型既可以是一个文本命令,也可以是一个表名,还可以是一个存储过程.(该原型的详细解释请查阅[5])下面给出一个实例来具体说明如何在Visual C++环境下用Recordset对象实现记录集的遍历、更新.假定在S Q L Server中已经存在fact表,它包含四个字段:I D,name,age,birthday.以下的代码将实现:打开记录集,遍历所有记录,删除第一条记录,移动光标到最后一条记录,更改其姓名,保存到数据库.v oid CAdoDlg::OnOperation(){CS tring output;-variant-t vname,vBirthday,vID,vage;-RecordsetPtr m-pRecordset;m-pRecordset.CreateInstance(-uuidof(Recordset));m-pRecordset->Open(”SE LECT3FROM fact”,-variant-t((IDispatch3)m-pC onnection,true),adOpenS tatic,ad LockOptim istic,adCmdT ext);//打开记录集//遍历所有记录while(!m-pRecordset->adoE OF){vID=m-pRecordset->G etC ollect(-variant-t((long)0));//取得第1列的值,从0开始计数vname=m-pRecordset->G etC ollect(”name”);//取得name字段的值vage=m-pRecordset->G etC ollect(”age”);vBirthday=m-pRecordset->G etC ollect(”birthday”);if(vID.vt!=VT-NU LL&&vname.vt!=VT-NU LL&&vage.vt!=VT-NU LL&&vBirthday.vt!=VT-NU LL){output.F ormat(”id:%d,name:%s,age:%d,birthday:%s”,vID.lVal,(LPCTSTR)(-bstr-t)vname,vage.lVal,(LPCTSTR)(-bstr-t)vBirthday);A fxM essageBox(output);//输出记录集中的记录}m-pRecordset->M oveNext();//移到下一条记录m-pRecordset->M oveFirst();//移到首条记录m-pRecordset->Delete(adA ffectCurrent);//删除当前记录m-pRecordset->M oveLast();//移到记录尾m-pRecordset->PutC ollect(-variant-t(”name”),-variant-t(”T om”));//修改其姓名m-pRecordset->Update();//保存到库中}(4)使用完毕后关闭记录集与连接记录集或连接都可以用Close方法来关闭,代码如下:m-pRecordset->Close();//关闭记录集m-pC onnection->Close();//关闭连接4 小结数据访问发展的趋势是O LE DB,使用O LE DB最简单的方法是ADO.ADO的对象层次模型封装了数据库访问细节,为Visual C++程序员提供了一种非常好的数据访问策略.作为访问数据库的新技术,ADO所具有易于使用、访问灵活、应用广泛的特点是ODBC等数据库访问技术所无法比拟的.参考文献:[1]李博轩.Visual C++6.0数据库开发指南[M].清华大学出版社,2000.[2]希望图书创作室译.Visual C++6.0技术内幕[M].北京希望电子出版社,1999.[3]李闽溟,吴继刚.Visual C++6.0数据库开发实例导航[M].人民邮电出版社,2002.[4]夏云庆.Visual C++6.0数据库高级编程[M].北京希望电子出版社,2002.(责任编辑:王前) ADO and Its Application in Database Programming under the Condition of Visual C++ZH AO Fa-xin(Math Department,Tonghua Teacher s College,Tonghua,Jilin,134002)Abstract:The paper introduces the theorem of target m odel of ADO and makes a systematic research on its applica2 tion under the condition of Visual C++,the correpounding program codes are als o given.K ey w ords:ADO;Visual C++;application;database programming。

VC通过 ADO 访问数据库方法择优

VC通过 ADO 访问数据库方法择优

VC通过 ADO 访问数据库方法择优Visual C++ 是一个编程语言,它可以通过 ADO(ActiveX 数据对象)来访问数据库。

ADO 是微软 Windows 上的一个内置数据库工具,它可以帮助开发者轻易地访问关系型数据库。

ADO 通过提供一套 COM(组件对象模型)接口,让开发者能够连接并操作不同类型的数据库,包括 Microsoft Access、Oracle 和 SQL Server 等。

以下是 VC 通过 ADO 访问数据库的方法择优描述。

1. 使用 ODBC 连接字符串ODBC(开放式数据库连接)是一个开放式标准,通过它,应用程序可以访问多个数据库,这些数据库可能来自于不同的供应商。

使用 ODBC 连接字符串可以通过 ADO 访问数据库。

它的优点是可以访问不同类型的数据库,但缺点是连接字符串比较麻烦,并且性能较差。

2. 使用 DSN 连接DSN(数据源名称)是一个名称,它通常与一个特定的数据库链接相关联。

使用 DSN 可以通过 ADO 访问数据库。

它的主要优点是连接字符串比较简单,但缺点是不能访问所有类型的数据库,并且性能稍差。

3. 使用 Jet 数据库引擎Jet 数据库引擎是一个文件级数据库,可以与ADO 一起使用,用于访问 Microsoft Access 数据库。

它的主要优点是可以访问Microsoft Access,不需要安装其他数据库软件,但缺点是不能访问其他类型的数据库,并且性能较差。

4. 使用 SQL Server OLE 数据提供程序SQL Server OLE 数据提供程序是一个为 SQL Server 设计的ADO 数据提供程序,它可以通过 ADO 访问 SQL Server 数据库。

它的主要优点是可以访问 SQL Server 数据库,但缺点是不能访问其他类型的数据库,并且需要安装 SQL Server 客户端软件(如 SQL Native Client)。

VC中使用ADO进行数据库开发的一些资料的整理

VC中使用ADO进行数据库开发的一些资料的整理

VC中使用ADO进行数据库开发的一些资料的整理1.导入ado库在StdAfx.h中,加入如下代码#import "c:\program files\common files\system\ado\msado15.dll" \no_namespace rename("EOF","adoEOF") renam e("BOF","adoBOF") 初试化在app的InitInstance中,加入AfxOleInit();(MFC)或者CoInitialize(NULL)如果用了CoInitialize退出时,要调用CoUninitialize()注意,如果在线程中也使用了com,那么在线程中也要用CoInitialize初始3.连接数据库_ConnectionPtr m_pAppConn;hResult = m_pAppConn.CreateInstance(_T("ADODB.Connection"));///创建Connection对象然后连接之m_pAppConn->Open("Provider=Microsoft.Jet.OLEDB.4.0 ; \Data Source = .\\DataBase\\aa.mdb","","",adModeUnknown);BOOL OpenConnect(){HRESULT hResult;CloseConnect();try{hResult = m_pAppConn.CreateInstance(_T("ADODB.Connection"));///创建Connection对象 if(SUCCEEDED(hResult)){m_pAppConn->Open("Provider=Microsoft.Jet.OLEDB.4.0 ; \Data Source = .\\DataBase\\aa.mdb","","",adModeUnknown);}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.ErrorMessage()); AfxMessageBox(errormessage);hResult = -1L;}return (SUCCEEDED(hResult) ? TRUE : FALSE);}这里连接的数据库是access数据库,在工程目录下的DataBase\aa.mdb关键连接的字符窜,如果是accessProvider=Microsoft.Jet.OLEDB.4.0;Data Source=\\192.168.1.1\DataBase\aa.mdb; 这是局域网上的文件Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\\DataBase\\aa.mdb;本机上的如果是sql 2000Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Password=sa;Initial Catalog=aa;Data Source=192.168.1.1;数据库在192.168.1.1上,数据库名字是aa4.关闭连接BOOL CloseConnect(){HRESULT hResult=0;try{if(m_pAppConn!=NULL){if(m_pAppConn->State!=adStateClosed){hResult=m_pAppConn->Close();}m_pAppConn.Release();}}catch(_com_error e){_bstr_t bstrSource(e.Source());_bstr_t bstrDescription(e.Description());TRACE(_T("\n Source : %s \n Description : %s\n"),(LPCSTR)bstrSource,(LPCSTR)bstrDescription);hResult=-1L;}return (SUCCEEDED(hResult) ? TRUE : FALSE);}5.使用recodeset打开记录_variant_t RecordsAffected;_RecordsetPtr pRecordset = NULL;strSql = _T("SELECT field FROM table");pRecordset.CreateInstance(_uuidof(Recordset));pRecordset = pConn->Execute (_bstr_t(strSql) , &RecordsAffected , adCmdUnknown); 其中&RecordsAffected 可以获得有多少记录返回,这是记录的影像数目6.关闭记录集if(pRecordset != NULL && pRecordset->State){pRecordset->Close();pRecordset = NULL;}7.判断是否为空if (pRecordset->adoBOF && pRecordset->adoEOF) {//MessageBox("没有符合条件的记录存在!","提示");if(pRecordset != NULL && pRecordset->State){pRecordset->Close();pRecordset = NULL;}return;}8,从记录集取数据_variant_t var;pRecordset->MoveFirst();for(;!pRecordset->adoEOF;pRecordset->MoveNext()) {var = pRecordset->GetCollect(_T("field"));}9.几种常见数据的转换如果是字符窜的字段var = pRecordset->GetCollect(_T("field"));if(var.vt!=VT_NULL){str= (LPCTSTR)_bstr_t(var);}if(var.vt!=VT_NULL)判断是必须的,如果是空,转换会出错如果是int形int aa = atoi(str)_variant_t是个可变类型,支持很多种类型,10.使用command利用Command对象来执行SQL命令_CommandPtr m_pCommand;m_pCommand.CreateInstance("mand");_variant_t vNULL;vNULL.vt = VT_ERROR;vNULL.scode = DISP_E_PARAMNOTFOUND;///定义为无参数m_pCommand->ActiveConnection = m_pConnection;///非常关键的一句,将建立的连接赋值给它m_pCommand->CommandText = "SELECT * FROM users";///命令字串m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///执行命令,取得记录集如果使用记录集的open来打开command对象.如果在Source 参数中传送 Command 对象并且同时传递ActiveConnection 参数,那么将产生错误。

基于ADO方式的VC++数据库访问技术介绍

基于ADO方式的VC++数据库访问技术介绍

基于ADO方式的VC++数据库访问技术介绍一、ADO概述我们先介绍一下ADO,让大家对ADO有个大概的了解。

ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的使用程序层接口。

ADO 使您能够编写使用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。

和ODBC相比,ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小及可移植性好。

下面我们结合具体的例子给大家讲解VC++中ADO是如何对数据库进行操作的。

二、系统设计本系统主要由用户登陆模块、用户操作界面模块和管理模块构成。

实现生物医学工程学生信息的管理。

三、建立数据库和数据表我们用Microsoft Office 2003中的Microsoft Access 2003来进行数据库和数据表的创建工作。

1、建立“shengyi”数据库(1)启动Microsoft Office 2000中的Microsoft Access 2000使用程序,再出现的对话框中创建一个新的数据库或打开一个已经存在的数据库。

(2)选择创建新数据库,即选择“空Access 数据库”选项。

(3)单击“确定”按钮后出现保存对话框,确定保存数据库的文件位置,将数据库命名为:shengyi。

(4)在数据表设计界面中,用户可以打开已经存在的数据表,也可以创建新的数据表。

单击“设计”菜单项,出现数据表设计器,用户可以设计一个新的数据表结构。

2、分别建立用户登陆表、年级表、学生个人信息表,如图1图1(1)class数据表的结构如图2图2(2)denglu数据表的结构如图3图3(3)personal数据表的结构如图4图4创建完成后可以在数据表中输入一些数据。

以在后面的登陆系统界面中体现其效果。

四、ADO和数据库的连接具体的建立过程相信大家都已经知道了,这里我们就不再详述了。

本系统建立的是但文档类型,工程名称为sheng。

1、引入ADO库文件使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import 引入ADO库文件,以使编译器能正确编译。

VC++中使用ADO方式操作

VC++中使用ADO方式操作

VC++中使用ADO方式操作ACCESS数据库2005-12-12 09:59作者:刘涛出处:天极开发责任编辑:方舟ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对OLE DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO、RDO都要容易使用,并不失灵活性。

本文详细地介绍在Visual C++开发环境下如何使用ADO来进行数据库应用程序开发,并给出示例代码。

为了使读者朋友都能测试本例提供的代码,我们采用Access数据库,您可以直接在我们提供的示例代码中找到这个test.mdb。

程序编译运行后的效果如图一所示:图一、ADO操作ACESS数据库的界面效果图一、实现方法万事开头难,任何一种新技术对于初学者来说最重要的还是"入门",掌握其要点。

让我们来看看ADO 数据库开发的基本流程吧!它的基本步骤如下:(1)初始化COM库,引入ADO库定义文件(2)用Connection对象连接数据库(3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。

(4)使用完毕后关闭连接释放对象。

下面我们将详细介绍上述步骤并给出相关代码。

1、COM库的初始化我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码:2、用#import指令引入ADO类型库为了引入ADO类型库,需要在项目的stdafx.h文件中加入如下语句:这一语句有何作用呢?其最终作用同我们已经十分熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。

VC中用ADO实现大数据的存取

VC中用ADO实现大数据的存取

VC中用ADO实现大数据的存取
费巧玲;徐向阳
【期刊名称】《计算机工程与应用》
【年(卷),期】2005(41)24
【摘要】在利用VC进行数据库编程时,常常需要存储较大的二进制数据对象,比如:图像、音频、视频文件或其它二进制数据,这些数据称之为二进制大对象
BLOB(Binary Large Object),其存取的方式与普通数据有所区别,它是作为OLE字段在数据库中存储,通过数据集对象的成员变量自动变换得到的图像数据,得到的数据并不能直接显示,如何处理这种数据,一直是数据库编程中的一个难点,目前关于VC进行数据库编程的资料不少,但很少涉及此类数据的操作.文章针对这一现状,并结合自己开发的一个项目,解决了如何显示access数据库中的图像这一问题.
【总页数】3页(P182-183,221)
【作者】费巧玲;徐向阳
【作者单位】湖南大学计算机与通信学院,长沙,410082;湖南大学计算机与通信学院,长沙,410082
【正文语种】中文
【中图分类】TP311.13
【相关文献】
1.VB中用数据库存取图片的实现 [J], 铁锐
2.使用ADO存取技术实现信息动态化管理—ASP和ADO在Web数据库中的应
用 [J], 曹军
3.VC中使用ADO存取OLE对象类型数据 [J], 丁蕊;周冬梅;晏强
4.在C++Builder中用OLE实现Excel的存取与共享 [J], 于洪章
5.C++中用>>和<<重载实现文本文件的方便存取 [J], 陈福海
因版权原因,仅展示原文概要,查看原文内容请购买。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
连接 .

R crstt接 口提供 了各种 各 样 关 于 记 录集 的 操作 方 法 ,包 括 记 录 锁 定 、游标 控 制 、遍 历 记 录 eode r P
集 、记 录集 中各 个 字段 的取 值 、修 改 等 .同样 ,该 接 口可 以 通过 已经 打 开 的一 onci Pr 取 记 录 , Cn etnt获 o 也 可 以通 过一个 连接 字符 串直接 从数 据库 中检 索记 录集 .
A O可以访问所有适用于 O E B访问的关系型数据库 ( D M )或者非关系型数据库 ,无论是 D LD RBS O E B数据 源或者 O B LD D C数 据 源.A O也 可 以跳 过 所 有 的 中 间层 直 接 访 问数 据 库 ,这 种 访 问 模 型 如 D
图 1 示. 所
张韶 峰
( 阳 市地 理 信 息 中心 , 河 南 洛 阳 4 10 ) 洛 7 0 0

要 :简要介 绍 了通过 V sa C+ +语 言 结合 A O访 问 关 系型数 据 库 的技 术 , i l u D
重点介 绍 了通过 AD O访 问数 据库 的方 法和 步骤 ,并描 述 了 A O 中处理二进 制 大数据 项 D
3 使用 A O的方法和步骤 D
要使 用 A O接 口,需要 遵循 如下 的步 骤. D
3 1 引入 A O库 文件 . D
在使 用 A O 以前 ,必 须在工 程 的 s axh文 件 中直接 引入 A O库文 件 ,以使 编译器 正确编译 . D t f. d D
#m o e \rga fe \o mofe \yt a o m ao 5 d ”n — a saernme ” O ” i p r :por i s em n l ss m\d \ sd l . U o nmep e ea ( E F . t” m l is e
_
C net nt接 口用 于建 立与数 据源 的连 接 ,或 者用 于 执行 不返 回结 果 的 S L语 句 ,也 可 以返 回 oneoPr i Q

个 记 录集 ,不 过 不常用 于这个 目的.这个接 口相 当于 O B D C中 的 C a bs ,创建 和 数 据源 的连接 D t ae类 a
1 A O技术 简 介 D
A O是 O E B的 C M 版本 ,简 化 了 O E B编 程 ,其 主要 优 点 是 易 于使 用 、速 度快 、 内存 支 出 D LD O LD 少 、磁盘遗 迹小等 .在很 多应 用方 案 中使用 最 少 的网 络 流量 ,并 且 在前 端 和 数据 库 之 间使 用 最 少 的层 数 ,因此是 一个轻 量级高性 能 的接 口.同时 ,由于 A O提 供 了访 问 自动 化 接 口 ,甚 至可 以用 脚 本 语 言 D 来访 问 ,如 V cit aaSr t BSr 、Jv ci 等. p p
才是它的主要职责. C m n Pr 口提供 了一种 简单 的方 法来 执行 返 回记 录集 的存 储 过程 和 S L语 句 .一 般情 况 下 , o mad t接 Q

该 接 口利用一 onei Pr已 经 建 立 的数 据 源 连 接 ,不 过 也 可 以 利 用 该 接 口 直 接 通 过 S L语 句 建 立 Cn etn t o Q
难 度较 大 ,且 只能用 V C++编 程.D O技术一 般 只用 于文 件 型数 据 库 ( d ) A m b ,如 Mioo e D C c sfJt r t .O B
是传统的访问方法,可以非常方便地操作关系型数据库 ,但是访问速度较慢. 微软推荐的数据库访问技
术 是 A O ( c vX数 据对 象 ) D Ate i .
数 据访 问技术 操纵数据 库 ,如 O B 、A O、O E B、D O 等.这 些 技 术 中 ,O E B技 术 可 以访 问关 DC D LD A LD
系型数 据库 和非关系 型数据 库 ,提供 了最 大 的适 应 范 围 ,但 是 涉 及 到数 据 库 的许 多 底层 操 作 ,编7年 6月
洛阳大学学报 ‘
J RNAL O UOYAN U VE nY 0U FL G NI RS
V 12 . o . 2 No 2
Jn u.
2 0 O7
V C++中应 用 A O访 问二 进 制 大 数 据项 的研 究 D
图 1 A O访 问模 型 图 D
2 AD O的构 成
A O包括 C net n对 象 、C m a d对 象 、P rm tr 象 、R crst 象 、Fe D o nc o i omn aa e 对 e eode 对 i d对 象 、Err l r 对 o
收稿 口期 : 07— 3—1 20 0 6 作 者 简 介 :张韶 峰 ( 97一) 16 ,男 ,汉 族 ,河 南 省 洛 阳市 人 ,硕 士 ,高 级 程 序 员 ,研 究 方 向 :计 算 机 应用 软件 和 地 理 信息 系 统 。
维普资讯

7 6・
洛阳大学学报
象 、Poe y r r 对象以及相应 的集合 对 象,这些 对象 被封 装在一 oneoP 接 口、一 o m dt接 口、 pt C netnt i r C m nP r

R crstt 口等 3个 基本接 口中. eode r P ̄
( L B) 的方法 ,提 供 了访 问 B O BO L B的 实例 源代 码 . 关键词 :A O;B O D L B;数据 库 ;V C+ +
中图分 类号 : P 1 T 3 1文献标 识 码 : 文章 编 号 :10 A 0 7—1 3 2 0 )2— 0 5— 4 1 X(0 7 0 0 7 0 数 据库 技术在信 息系统 建设 中越来 越重要 ,在 Vsa C+ + ( il u 以下 简 称 V C++) 中可 以通 过许 多
相关文档
最新文档