【教学课件】第4章数据库及应用程序开发-数据库编程.ppt
《【教学课件】第4章数据库及应用程序开发-数据库编程.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第4章数据库及应用程序开发-数据库编程.ppt(44页珍藏版)》请在三一办公上搜索。
1、1,第4章 数据库及应用程序开发 数据库编程,西安交通大学计算机教学实验中心,软件开发技术基础,2,4.3 数据库编程,数据库连接技术 1ODBC微软公司ODBC(Open Database Connectivity,开放数据库互连),,建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。基于ODBC的应用程序对数据库的操作不依赖任何DBMS,由对应的DBMS的ODBC驱动程序完成。能以统一的方式处理所有的数据库。,3,2ADO和OLE DB,Microsoft推出的一致数据访问技术,为关系型或非关系型数据访问提供了一致的访问接口。ADO提供了高层软件接口,不仅可在高级语
2、言开发环境中使用,还可以在一些脚本语言中使用,这对于WEB程序访问数据库提供了捷径。OLE DB 提供了底层软件接口,4,3JDBC,Java 数据库连接JDBC(Java Database Connectivity)由一组用 Java 编程语言编写的类和接口组成。JDBC 为数据库开发人员提供了一个标准的API。程序可在任何平台上运行。,5,4.3.2 利用V C开发应用系统,1MFC ODBC类简介(1)Cdatabase:建立与数据源的连接 virtual BOOL Open(LPCTSTR lpszDSN,BOOL bExclusive=FALSE,BOOL bReadOnly=FAL
3、SE,LPCTSTR lpszConnect=“ODBC;”,BOOL bUseCursorLib=TRUE);throw(CDBException,CMemoryException);lpszDSN指定了数据源名。bExclusive说明是否独占数据源,bReadOnly若为TRUE则对数据源的连接是只读的。lpszConnect指定了一个连接字符串,连接字符串中可以包括数据源名、用户帐号(ID)和口令等信息,字符串中的“ODBC”表示要连接到一个ODBC数据源上。bUseCursorLib若为TRUE,则会装载光标库,否则不装载若连接成功,函数返回TRUE,若返回FALSE,若函数内部出现
4、错误,则会产生一个异常。,6,连接数据库语句实例,CDatabase m_db;m_db.Open(MyDS);m_db.Open(NULL,FALSE,FALSE,ODBC;DSN=MyDS;UID=ABC;PWD=1234);m_db.Open(NULL);/将弹出一个数据源对话框bool IsOpen()const;/返回TRUE则表明当前有一个连接virtual void Close();,7,(2)CRecordset类,从数据源选择的一组记录(记录集)。CRecordset(CDatabase*pDatabase=NULL);virtual CString GetDefaultCo
5、nnect();该函数返回缺省的连接字符串,8,virtual BOOL Open(UINT nOpenType=AFX_DB_USE_DEFAULT_TYPE,LPCTSTR lpszSQL=NULL,DWORD dwOptions=none);throw(CDBException,CMemoryException);该函数使用指定的SQL语句查询数据源中的记录并按指定的类型和选项建立记录集。nOpenType说明了记录集的类型。打开记录集的方式:Snapshot(快照),Dynaset(动态集)、forwordOnly,9,lpszSQL是一个SQL的SELECT语句,或是一个表名 dwO
6、ptions可以是一些选项的组合 CRecordset:none 无选项(缺省)。CRecordset:appendOnly/不允许修改和删除记录,但可以添加记录。CRecordset:readOnly/记录集是只读的。CRecordset:skipDeletedRecords/有些数据库(如FoxPro)在删除记录时并不真删除,而是做个删除标记,在滚动时将跳过这些被删除的记录。,10,调用CRecordset的滚动函数,如MoveFirst,MoveNext,ovePrev,MoveLast等,来改变“当前”记录的位置。IsBOF,IsEOF用于判别是否移动到记录集的头或尾。,11,(3)C
7、RecordView,该类提供了一个表单视图与某个记录集直接相连。在记录集与表单视图的控件之间传输数据。,12,(4)CDBException,该类代表ODBC类产生的异常。对于数据库操作错误,出现CDBException类型的异常,其它类型的错误,出现CMemoryException异常。,13,2执行SQL语句,可以使用CDatabase类的ExecuteSQL函数直接执行SQL语句。ExecuteSQL能:查询记录、创建新表、删除表、创建索引、修改记录、删除记录和插入记录ExecuteSQL的声明如下:void ExecuteSQL(LPCTSTR lpszSQL)其中,lpszSQL表
8、示要执行的SQL语句。,14,3 数据库操作的基本过程,(1)连接数据库建立CDataBase类对象,通过CDataBase类的Open函数连接数据库。(2)执行SQL语句对于要返回结果集的查询操作,可以通过CRecordSet类的Open函数实现,对于不返回结果集的其它SQL语句可以通过CdataBase类的ExecuteSQL函数实现。(3)断开与数据库的连接通过CDataBase类的Close函数断开与数据库的连接。,15,.3.3 编程实例,【例4-49】连接SQL Server 2000数据库company。假定对SQL Server 2000数据库company已经建立了数据源Co
9、mpanyDS,编程连接该数据库。如果连接成功,显示“连接成功”,否则显示“连接失败”。#include stdafx.h#include#include#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE=_FILE_;#endif,CDatabase database;CWinApp theApp;using namespace std;int _tmain(int argc,TCHAR*argv,TCHAR*envp)int nRetCode=0;/初始化MFC并进行判断if(!AfxWinInit
10、(:GetModuleHandle(NULL),NULL,:GetCommandLine(),0)/TODO:change error code to suit your needscerr _T(Fatal Error:MFC initialization failed)endl;nRetCode=1;,elseBOOL bStatus=false;/设置等待建立连接的时间database.SetLoginTimeout(10);try/与数据源LibraryDB建立连接bStatus=database.Open(NULL,FALSE,FALSE,ODBC;DSN=CompanyDS;);i
11、f(bStatus)cout连接成功!endl;elsecout连接失败!endl;,catch(CMemoryException*pEx)/异常处理pEx-ReportError();catch(CDBException*pDBEx)pDBEx-ReportError();/输出错误信息coutm_nRetCodem_strErrorm_strStateNativeOriginn;database.Close();/关闭数据库return nRetCode;,19,【例4-50】,【例4-50】查询SQL Server 2000数据库company中表employee的记录信息。假定对SQL
12、 Server 2000数据库的company已经建立了数据源CompanyDS,company中有一个表employee。该实例显示表中所有职员的no(编号)、name(姓名),sex(性别)和salary(工资)。,20,解题思路,数据库连接成功后,调用Crecordset类的Open函数执行指定的SQL语句查询数据源中的记录,并按指定的类型和选项建立记录集。对记录集中的记录,需要用循环方法逐条处理。处理完当前记录后,调用Crecordset类的MoveNext函数,将记录指针移至下条记录。当最后一条记录处理完毕后,函数IsEOF的值为真。,21,bStatus=database.Open
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 数据库 应用程序 开发 编程
链接地址:https://www.31ppt.com/p-5658813.html