1、数据库编程总结1当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等。数据库编程是对数据库的创建、读写等一列的操作。数据库编程分为数据库客户端编程与数据库服务器端编程。数据库客户端编程主要使用ODBC API、ADO、ADO.NET、OCI、OTL等方法;数据库服务端编程主要使用OLE DB等方法。数据库编程需要掌握一些访问数据库技术方法,还需要注意怎么设计高效的数据库、
2、数据库管理与运行的优化、数据库语句的优化。一、访问数据库技术方法数据库编程分为数据库客户端编程与数据库服务器端编程。数据库客户端编程主要使用ODBC API、ADO、ADO.NET、OCI、OTL等方法;数据库服务端编程主要使用OLE DB等方法。1、几种是数据库访问方法比较ODBC API是一种适合数据库底层开发的编程方法,ODBC API提供大量对数据源的操作,ODBC API能够灵活地操作游标,支持各种帮定选项,在所有ODBC相关编程中,API编程具有最高的执行速度。DAO提供了很好的数据库编程的对象模型.但是,对数据库的所有调用以及输出的数据都必须通过Access/Jet数据库引擎,这
3、对于使用数据库应用程序,是严重的瓶颈。OLE DB提供了COM接口,与传统的数据库接口相比,有更好的健壮性和灵活性,具有很强的错误处理能力,能够同非关系数据源进行通信。ADO最主要的优点在于易于使用、速度快、内存支出少和磁盘遗迹小。ADO.NET 是利用数据集的概念将数据库数据读入内存中,然后在内存中对数据进行操作,最后将数据集数据回写到源数据库中。OTL 是 Oracle, Odbc and DB2-CLI Template Library 的缩写,是一个C+编译中操控关系数据库的模板库, OTL中直接操作Oracle主要是通过Oracle提供的OCI接口进行,进行操作DB2数据库则是通过C
4、LI接口来进行,至于MS的数据库和其它一些数据库,则OTL只提供了ODBC来操作的方式。当然Oracle和DB2也可以由OTL间接使用ODBC的方式来进行操纵。具有以下优点:跨平台;运行效率高,与C语言直接调用API相当;开发效率高,起码比ADO.net使用起来更简单,更简洁;部署容易,不需要ADO组件,不需要.net framework 等。2、VC数据库编程几种方法VC数据库编程几种方法,包括ODBC连接、MFC ODBC连接、DAO连接、OLE DB、OLE DB Templates连接、ADO、Oracle专用方法(OCI(Oracle Call Interface)访问、Oracle
5、 Object OLE C+ Class Library )。通用方法1. ODBC连接ODBC(Open DataBase Connectivity)是MSOA的一部分,是一个标准数据库接口。它提供对关系数据库访问的统一接口,实现对异构数据源的一致访问。ODBC数据访问由以下部分组成:句柄(Handles):ODBC使用句柄来标识ODBC环境、连接、语句和描述器.缓存区(Buffers):数据类型(Data types)一致性级别(Conformance levels)用ODBC设计客户端的一般步骤:分配ODBC环境分配连接句柄连接数据源构造和执行SQL语句获得查询结果断开数据源的连接释放O
6、DBC环境ODBC API是一种适合数据库底层开发的编程方法,ODBC API提供大量对数据源的操作,ODBC API能够灵活地操作游标,支持各种帮定选项,在所有ODBC相关编程中,API编程具有最高的执行速度.因此,ODBC API编程属于底层编程。2. MFC ODBC连接MFC ODBC是MFC对ODBC进行的封装,以简化对ODBC API的 调用,从而实现面向对象的数据库编程接口.MFC ODBC的封装主要开发了CDatabase类和CRecordSet类(1) CDatabase类CDatabase类用于应用程序建立同数据源的连接。CDatabase类中包含一个m_hdbc变量,它代
7、表了数据源的连接句柄。如果要建立CDatabase类的实例,应先调用该类的构造函数,再调用Open函数,通过调用,初始化环境变量,并执行与数据源的连接。在通过Close函数关闭数据源。CDatabase类提供了对数据库进行操作的函数及事务操作。(2) CRecordSet类CRecordSet类定义了从数据库接收或者发送数据到数据库的成员变量,以实现对数据集的数据操作。CRecordSet类的成员变量m_hstmt代表了定义该记录集的SQL语句句柄,m_nFields为记录集中字段的个数,m_nParams为记录集所使用的参数个数。CRecordSet的记录集通过CDatabase实例的指针实
8、现同数据源的连接,即CRecordSet的成员变量m_pDatabase.MFC ODBC编程更适合于界面型数据库应用程序的开发,但由于CDatabase类和CRecordSet类提供的数据库操作函数有限,支持的游标类型也有限,限制了高效的数据库开发。在编程层次上属于高级编程。应用实例:1.打开数据库CDatabase database;database.OpenEx( _T( DSN=zhuxue ),CDatabase:noOdbcDialog);/zhuxue为数据源名称2.关联记录集CRecordset recset(&database);3.查询记录CString sSql1=;sS
9、ql1 = SELECT * FROM tablename ;recset.Open(CRecordset:forwardOnly, sSql1, CRecordset:readOnly);int ti=0;CDBVariant var;/var可以转换为其他类型的值while (!recset.IsEOF()/读取Excel内部数值recset.GetFieldValue(id,var);jiangxiangti.id=var.m_iVal;recset.GetFieldValue(name, jiangxiangti.name);ti+;recset.MoveNext();recset.C
10、lose();/关闭记录集4.执行sql语句CString sSql=;sSql+=delete * from 院系审核;/清空表database.ExecuteSQL(sSql);sSql也可以为Insert ,Update等语句5.读取字段名sSql = SELECT * FROM Sheet1 ; /读取的文件有Sheet1表的定义,或为本程序生成的表./ 执行查询语句recset.Open(CRecordset:forwardOnly, sSql, CRecordset:readOnly);int excelColCount=recset.GetODBCFieldCount();/列数
11、CString excelfield30;/得到记录集的字段集合中的字段的总个数for( i=0;iexcelColCount;i+)CODBCFieldInfo fieldinfo;recset.GetODBCFieldInfo(i,fieldinfo);excelfieldi.name =fieldinfo.m_strName;/字段名6.打开excel文件CString sDriver = MICROSOFT EXCEL DRIVER (*.XLS); / Excel安装驱动CString sSql,sExcelFile; /sExcelFile为excel的文件路径TRY/ 创建进行存
12、取的字符串sSql.Format(DRIVER=%s;DSN=;FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=%s;DBQ=%s,sDriver, sExcelFile, sExcelFile);/ 创建数据库 (既Excel表格文件)if( database.OpenEx(sSql,CDatabase:noOdbcDialog) )/可以把excel作为一个数据库操作catch(e)TRACE1(Excel驱动没有安装: %s,sDriver);AfxMessageBox(读取失败,请检查是否定义数据区Sheet1);3. DAO连接DAO(Data
13、 Access Object)是一组Microsoft Access/Jet数据库引擎的COM自动化接口.DAO直接与Access/Jet数据库通信.通过Jet数据库引擎,DAO也可以同其他数据库进行通信。DAO还封装了Access数据库的结构单元,通过DAO可以直接修改Access数据库的结构,而不必使用SQL的数据定义语言(DDL)。DAO的体系结构如下:DAO封装的类:(1)CdaoWorkspace:对DAO工作区(数据库处理事务管理器)的封装(2)CdaoDatabase:对DAO数据库对象的封装,负责数据库连接.(3)CdaoRecordset:对DAO记录集对象的封装,代表所选的
14、一组记录.(4)CdaoTableDef:对表定义对象的封装,代表基本表或附加表定义.(5)CdaoQueryDef:对查询对象的封装,包含所有查询的定义.(6)CdaoException:DAO用于接收数据库操作异常的类.(7)CDaoFieldExchangeDAO提供了很好的数据库编程的对象模型.但是,对数据库的所有调用以及输出的数据都必须通过Access/Jet数据库引擎,这对于使用数据库应用程序,是严重的瓶颈。DAO相对于ODBC来说,属于高层的数据库接口.4. OLE DB连接OLE DB对ODBC进行了两方面的扩展:一是提供了数据库编程的OLE接口即COM,二是提供了一个可用于关
15、系型和非关系型数据源的接口。OLE DB提供了COM接口,与传统的数据库接口相比,有更好的健壮性和灵活性,具有很强的错误处理能力,能够同非关系数据源进行通信。与ODBC API一样,OLE DB也属于底层的数据库编程接口,OLE DB结合了ODBC对关系数据库的操作功能,并进行扩展,可以访问非关系数据库。OLE DB访问数据库的原理如下:OLE DB程序结构:OLE DB由客户(Consumer)和服务器(Provider)。客户是使用数据的应用程序,它通过OLE DB接口对数据提供者的数据进行访问和控制。OLE DB服务器是提供OLE DB接口的软件组件。根据提供的内容可以分为数据提供程序(Data Provider)和服务提供程序(Service Provider)。程序结构原理图如下:数据提供程序数据提供程序拥有自己的数据并把数据以表格的形式呈现给使用者使用.服务提供程序服务提供程序是数据提供程序和使用者的结合。它是OLE DB体系结构中的中间件,它
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1