VC访问数据库技术的方法实例

上传人:油条 文档编号:14303880 上传时间:2017-10-29 格式:DOC 页数:3 大小:42KB
返回 下载 相关 举报
VC访问数据库技术的方法实例_第1页
第1页 / 共3页
VC访问数据库技术的方法实例_第2页
第2页 / 共3页
VC访问数据库技术的方法实例_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《VC访问数据库技术的方法实例》由会员分享,可在线阅读,更多相关《VC访问数据库技术的方法实例(3页珍藏版)》请在金锄头文库上搜索。

1、VC 访问数据库技术的方法实例1. ODBC开放数据库互联ODBC 为使用不同的关系数据库提供了一个统一的程序设计接口。在安装不同的数据库后,需要创建 ODBC 数据源,2. DAO数据访问对象3. RDO远程数据对象4. OLE DB对象连接与嵌入数据库5. ADOActiveX 数据对象这里我说明我使用的两种方法:ODBC 和 ADO。1. ODBC在安装数据库首先要创建 ODBC 数据源,使用 CDatabase 和 CRecordset 两个 MFC 的类与数据库建立连接,访问数据库。1.1 条件包含头文件:#include 声明成员变量:CDatabase m_dbPostGre;1

2、.2 连接数据库int nRetVal;nRetVal = m_dbPostGre.OpenEx( _T( DSN=PostgreSQL30W;UID=PostGre;PWD=PostGre ),CDatabase:openReadOnly | CDatabase:noOdbcDialog );if ( nRetVal )AfxMessageBox( _T( 连接数据库成功! ) );1.3 访问数据CRecordset recordset( &m_dbPostGre );CString strSQL = _T( select * from product );recordset.Open(

3、CRecordset:forwardOnly, strSQL, CRecordset:readOnly );CDBVariant var;while ( !recordset.IsEOF() )TAG_PRODUCTINFO tagProductInfo;/ IDrecordset.GetFieldValue( _T( ID ), var );tagProductInfo.nProductID = var.m_iVal;/ Namerecordset.GetFieldValue( _T( Name ), tagProductInfo.strProductName );m_vecProductI

4、nfo.push_back( tagProductInfo );recordset.MoveNext();recordset.Close(); 2. ADO 技术ActiveX Data Object, ActiveX 数据对象。ADO 建立在 OLE DB 之上,采用 ADO 技术访问数据库的话,实际的调用过程是:ADO 客户程序通过 ADO 再访问 OLE DB 提供的程序,这样访问速度就要慢一些。如果某个关系型数据库没有 OLE DB 的提供程序,那么可以利用 ODBC 的 OLE DB 提供程序去访问 ODBC,然后利用 ODBC 再去访问支持 ODBC 的数据库。2.1 条件l 头文

5、件和动态库的加载#include #include #pragma warning(disable:4146) #import C:Program FilesCommon FilesSystemadomsado15.dll named_guids rename(EOF,adoEOF), rename(BOF,adoBOF) #pragma warning(default:4146) using namespace ADODB;l COM 组件的加载if ( CoInitialize( NULL ) != 0 )AfxMessageBox( _T( 初始化 Com 库失败! ) );return

6、 FALSE;l 变量的声明_ConnectionPtr m_pConnection;2.2 连接数据库m_pConnection.CreateInstance( _uuidof(Connection) );m_pConnection-ConnectionString = _T( DSN=PostgreSQL30W;UID=PostGre;PWD=PostGre );HRESULT hr = m_pConnection-Open( _T(), _T(), _T(), adConnectUnspecified );if ( SUCCEEDED( hr ) )AfxMessageBox( _T(

7、连接数据库成功! ) );2.3 访问数据库_CommandPtr pCommand(_uuidof(Command);_RecordsetPtr pRecordset( _uuidof(Recordset) );CString strSQL = _T( select * from pg_getProductInfo() );trypCommand-ActiveConnection=m_pConnection;pCommand-CommandText=_bstr_t(strSQL);pRecordset=pCommand-Execute(NULL,NULL,adCmdText);catch (

8、_com_error & e)AfxMessageBox(e.Description();return ;_variant_t var; int nRecordNum = pRecordset-GetRecordCount();while( !pRecordset-GetadoEOF() )TAG_PRODUCTINFO tagProductInfo;/ IDvar = pRecordset-GetCollect( _T( ID ) );tagProductInfo.nProductID= var.intVal;/ Namevar = pRecordset-GetCollect( _T( Na

9、me ) );tagProductInfo.strProductName = (char*)_bstr_t(var);m_vecProductInfo.push_back( tagProductInfo );pRecordset-MoveNext();pRecordset-Close();pRecordset.Release();总结:现在 DAO 和 RDO 这两种技术已经很少使用了, OLE DB 和 ADO 这两种是比较新的技术,OLE DB 的功能非常强大,但是他对自动化的支持不是很好。为了更好地支持自动化,微软在 OLE DB 的基础上开发了 ADO,便于像 VBScript 这样的

10、脚本语言,以及 VB,Delphi 这样的语言都可以很方便的使用 ADO 去访问数据库。上面两种技术对于不同的关系数据库,使用方法都是一样的,不同的就是数据源,名称,密码以及 SQL 语句的调用方式。举个例子:以调用存储过程为例SQLServer2000 的调用方法是 ”CALL sp_addMember( %s, %s, %d )”,如果不带参数,则没有小括号,如果带参数,字符串的参数需要加单引号。PostGre 的调用方法是” _T( select pg_modifyOneProduct( %d, %s )”,“是转义字符,因为在 PostGre 定义存储过程时,如果存储过程名称加上了双引号,那么在调用的时候,就一定要加上双引号,SQL 中应该就是这么规定的。还有一个存储过程如果是想返回表中所有记录,那么在调用存储过程的时候就要使用 Selece * from 存储过程名。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号