第7章数据库编程.pdf
《第7章数据库编程.pdf》由会员分享,可在线阅读,更多相关《第7章数据库编程.pdf(110页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VC+程序设计实用教程VC+程序设计实用教程第7 章数据库编程第7 章数据库编程河北经贸大学信息技术学院河北经贸大学信息技术学院2008年9月2008年9月教学目标教学目标了解ODBC的概念;掌握MFC ODBC中的CDatabase类、CRecordset类、CRecordView类的使用方法;CRecordset类、CRecordView类的使用方法;掌握常用的SQL语句;掌握MFC ODBC开发数据库应用程序的方法和掌握MFC ODBC开发数据库应用程序的方法和技巧;掌握编程模型掌握ADO编程模型。VC+程序设计实用教程铁道出版社2008.9本章主要内容本章主要内容连接数库的式连接数据库
2、的方式数据库的访问与ODBC数据库的访问与ODBCMFC ODBC使用ODBC数据库应用程序ADO数据库开发技术ADO数据库开发技术开发ADO应用程序的方法VC+程序设计实用教程铁道出版社2008.9连接数据库的四种方式连接数据库的四种方式ODBC(Open DataBase Connectivity)开放数据库连接开放数据库连接开放数据库连接开放数据库连接(py)提供了应用程序接口API。使得任何一个数据库都可以通过ODBC驱动器与指定的DBMS相联。用户的程序可以通过调用ODBC驱动管理器中相应的驱动程序达到管理数据库的目的。访问数据库时,是由中相应的驱动程序达到管理数据库的目的。访问数据
3、库时,是由ODBC管理器将应用程序的数据库访问请示传递给相应的数据库驱动程序,驱动程序再用SQL语句完成DBMS的访问任务。DAO(Data Access Objects)数据访问对象数据访问对象数据访问对象数据访问对象DAO(Data Access Objects)数据访问对象数据访问对象数据访问对象数据访问对象DAO使用Microsoft Jet提供的数据库访问对象集直接访问DBMS,速度比ODBC要快。OLE DB OLEOLE数据库数据库数据库数据库OLE DB OLE DB 是一种高性能的、基于是一种高性能的、基于 COMCOM(组件对象模型)(组件对象模型)的数据库技术的数据库技术
4、ActiveX Data Object(ADO)其中,最简单也最常用的是ODBC,而ADO则是目前最流行的一种数据库编程方法VC+程序设计实用教程铁道出版社2008.9其中,最简单也最常用的是ODBC,而ADO则是目前最流行的种数据库编程方法项目演示项目演示生绩管系统学生成绩管理系统(ODBC)一个简单学生信息管理系统(ADO data个简单学生信息管理系统(ADO data 控件)学生信息管理系统(ADO)学生信息管理系统(ADO)VC+程序设计实用教程铁道出版社2008.97.1数据库概述7.1数据库概述数库数据库和DBMS数据库是指以一定的组织形式存放在计算机上的相互关联的数据数据库是指
5、以定的组织形式存放在计算机上的相互关联的数据的集合。一般一个库中有多个表组成,一张表中由多条记录组成,一条记录由若干字段组成。例如:学生信息库-基本信息表、成绩表基本信息表-每个学生的基本信息记录基本信息记录姓名性别年龄专业等字段组成基本信息记录-姓名、性别、年龄、专业等字段组成DBMS数据库管理系统为用户提供对数据库操作的各种命令、工具及方法。例如:Access/Oracle/SQL Sever等等VC+程序设计实用教程铁道出版社2008.9ODBCODBCODBC开放数据库接口ODBC是一种标准的基于SQL的接口,提供了应用程序与数据库之间的接口,使得任何一个数据库都可以通过ODBC驱动器
6、与指定的DBMS相联。使用ODBC能使用户编写数据库应用程序变得容易简单避免了与数据库相连接的复杂性序变得容易简单,避免了与数据库相连接的复杂性。ODBC的组成见图ODBC管理器:位于控制面板控制面板驱动程序管理器:ODBC32.dll驱动程序 以文件形式出现ODBC驱动程序:以DLL文件形式出现MFC ODBCMFC类库中提供了两个有关ODBC对数据库操作的类:CDatabaseCRecordsetVC+程序设计实用教程铁道出版社2008.9图 ODBC的构成图 ODBC的构成ODBC32.dll以DLL文件形式出现位于控制面板控制面板VC+程序设计实用教程铁道出版社2008.9MFC OD
7、BC主要类介绍MFC ODBC主要类介绍 CDatabaseCDatabase 类:包含有数据库的连接信息包含有数据库的连接信息 可以在整可以在整 CDatabaseCDatabase 类:包含有数据库的连接信息包含有数据库的连接信息,可以在整可以在整个应用程序中共享这些信息,一个个应用程序中共享这些信息,一个Cdatabase对象代表了一个与数据源的连接,通过它可以对数据源对象代表了一个与数据源的连接,通过它可以对数据源进行操作进行操作要想建立与数据源的连接要想建立与数据源的连接必须创建必须创建进行操作进行操作。要想建立与数据源的连接要想建立与数据源的连接,必须创建必须创建Cdatabase
8、对象,然后用对象,然后用Open()函数或函数或OpenEx()函数函数初初始化始化此此对象对象。函数始化对象函数始化对象CDatabase m_db;m_db.OpenEx(“DSN=_p(STUDENT;UID=;PWD=”,CDatabase:noOdbcDialog);CRecordsetCRecordset类:针对数据源中的记录集针对数据源中的记录集,负责对记录的操作负责对记录的操作.一个一个CRecordset对象代表了一组从数据源查对象代表了一组从数据源查询出来的记录询出来的记录,称为记录集称为记录集。记录集从数据源中查记录集从数据源中查VC+程序设计实用教程铁道出版社2008.
9、9询出来的记录询出来的记录,称为记录集称为记录集。记录集从数据源中查记录集从数据源中查询出数据,然后再进行添加、排序等操作。询出数据,然后再进行添加、排序等操作。快照记录集(snapshot):数据集的一个静态视图快照记录集(snapshot):数据集的一个静态视图动态记录集(Dynaset):能保持与其它用户所作的更改保持同步使用记录集对象,首先应建立与数据源的连接,这时应当创建并初始化使用记录集对象,首先应建立与数据源的连接,这时应当创建并初始化CDatabaseCDatabase对象对象,然后将创建的然后将创建的CDatabaseCDatabase对象的指针传给对象的指针传给CRecor
10、dsetCRecordset对象对象CDatabaseCDatabase对象对象,然后将创建的然后将创建的CDatabaseCDatabase对象的指针传给对象的指针传给CRecordsetCRecordset对象对象的构造函数,这样记录对象创建成功,最后使用Open()函数对数据源进行数据查询。的构造函数,这样记录对象创建成功,最后使用Open()函数对数据源进行数据查询。CRdt(&db)CRecordset rs(&m_db);CString sql=“select*from student_tab”;rs.Open(CRecordset:dynaset,sql);rs GetField
11、Value(1 strname);rs.GetFieldValue(1,strname);CRecordView类:负责界面负责界面,以视图形式显示数据库记录以视图形式显示数据库记录CRecordView类对是在控件中显示数据库记录的视图对象是直接连接到CRecordView类对是在控件中显示数据库记录的视图对象,是直接连接到CRecordView对象上的表单视图。CDBException:负责处理负责处理MFC ODBC在操作数据库时发生的异常。在操作数据库时发生的异常。VC+程序设计实用教程铁道出版社2008.97.2 使用使用ODBC7.2 使用使用ODBC类的法CDatabase类的用
12、法CRecordset类的用法CRecordset类的用法CRecordView类CDBException类VC+程序设计实用教程铁道出版社2008.9CDatabase类的用法-建立与数据源的连接建立与数据源的连接CDatabase类的用法建立与数据源的连接建立与数据源的连接#include /ODBC类的定义在afxdb.h文件中CDatabase m db;CDatabase m_db;TRYm_db.OpenEx(_T(DSN=EMPLOYEEDB;UID=;PSW=),CDatabase:noOdbcDialog);CATCH(CDBEti)CATCH(CDBException,ex
13、)AfxMessageBox(ex-m_strError);AfxMessageBox(ex-m strStateNativeOrigin);AfxMessageBox(exm_strStateNativeOrigin);AND_CATCH(CMemoryException,pEx)ERtE()pEx-ReportError();AfxMessageBox(“Memorry Exception”);AND CATCH(CException,e)AND_CATCH(CException,e)TCHAR szError100;e-GetErrorMessage(szError,100);Af MB
14、(E)VC+程序设计实用教程铁道出版社2008.9AfxMessageBox(szError);END_CATCH用CDatabase类实现事务管理ExecuteSQL用CDatabase类实现事务管理ExecuteSQL插入记录插入记录插入记录插入记录CString sql=“insert into Employees VALUES(6,张晓 女 部门经理 2000 005)”/向表Employees插,女,部门经理,2000.00,5)/向表Employees插入一条新记录TRYm_db.ExecuteSQL(sql);_(q)CATCH(CDBException,ex)./同前AND_C
15、ATCH(CException,e)END_CATCHVC+程序设计实用教程铁道出版社2008.9删除记录删除记录CString sql=“delete from Employees where Dep_id=5”=5 /删除表Employees中部门代号为5的记录TRYTRYm db.ExecuteSQL(sql);_(q);CATCH(CDBException,ex)./同前AND_CATCH(CException,e)END_CATCHVC+程序设计实用教程铁道出版社2008.9修改记录修改记录CString sql=“update Employees SET Dep_id=4 WHER
16、E Dep id=5”=4 WHERE Dep_id=5/修改表Employees中部门代号为5的记录的部门代号为4门代号为4TRYm db.ExecuteSQL(sql);m_db.ExecuteSQL(sql);CATCH(CDBException,ex)./同前AND CATCH(CException,e)AND_CATCH(CException,e)END_CATCHVC+程序设计实用教程铁道出版社2008.9查询记录查询记录CSt il“lt*fElCString sql=“select*from Employees where Dep_id=4”/查询表Employees中部门代号
17、为4的记录TRYTRY m_db.ExecuteSQL(sql);CC(C)/同前CATCH(CDBException,ex)./同前AND CATCH(CException,e)_(p)END_CATCHVC+程序设计实用教程铁道出版社2008.9CRecordset类的用法CRecordset类的用法类的CRecordset类的成员打开和关闭记录集打开和关闭记录集增加一条新记录删除记录修改记录修改记录查询记录记录排序VC+程序设计实用教程铁道出版社2008.9CRecordset类的数据成员CRecordset类的数据成员VC+程序设计实用教程铁道出版社2008.9CRecordset类的
18、成员函数CRecordset类的成员函数VC+程序设计实用教程铁道出版社2008.9CRecordset类的成员函数CRecordset类的成员函数VC+程序设计实用教程铁道出版社2008.9打开和关闭记录集open/close打开和关闭记录集open/close CRecordset rs(&m db);/定义CRecordset对象并将其连接到数据库对象m dbCRecordset rs(&m_db);/定义CRecordset对象并将其连接到数据库对象m_dbTRYCString sql=“select*from Employees”;rs.Open(CRecordset:snapsho
19、t,sql)/打开记录集int nId;/职工代号CString strname,strtitle;/职工姓名,职务double wage;/工资double wage;/工资int i=0;/记录号CString StrInfo=记录号 职代号姓 名职 称工资n;while(!rs.IsEOF()i+;CDBVariant var;/定义变体对象rs GetFieldValue(short)0 var SQL C SLONG);/获取第一个字段的值整型rs.GetFieldValue(short)0,var,SQL_C_SLONG);/获取第个字段的值,整型if(var.m_dwType!=
20、DBVT_NULL)nId=var.m_lVal;var.Clear();VC+程序设计实用教程铁道出版社2008.9rs.GetFieldValue(1,strname);/获取第二个字段的值,文本型.增加一条新记录AddNew/Update增加条新记录AddNew/Update增加条m_pSet.AddNew();/增加一条新记录m pSet m ID=m ID;/为新记录的字段m_pSet.m_ID m_ID;/为新记录的字段赋值m pSet.Update();/保存记录m_pSet.Update();/保存记录m_pSet.Requery();/刷新记录集移动到新记录m_pSet.Mo
21、veLast();/移动到新记录VC+程序设计实用教程铁道出版社2008.9删除当前记录Delete删除当前记录Delete删除前m_pSet.Delete();/删除当前记录m pSet Requery();/刷新记录集m_pSet.Requery();/刷新记录集m_pSet.MovePrev();/移动到前一条记录录VC+程序设计实用教程铁道出版社2008.9修改当前记录Edit/Update修改当前记录Edit/Update允许户编辑前m_pSet.Edit();/允许用户编辑当前记录/完成所有的数据交换,更新记录中的字段段:m pSet Update()m_pSet.Update()
22、;VC+程序设计实用教程铁道出版社2008.9排序和查找m strSort/m strFilter排序和查找m_strSort/m_strFilter S t t St/按照字段排m_pSet-m_strSort=age;/按照字段age排序,升序m pSet-Open();/打开记录集m_pSet-Open();/打开记录集 /其他操作m pSet-Close();/关闭m_pSet-Close();/关闭CString str;Str=”name=张三”;Str=name=张三;m_pSet-m_strFilter=str;/查找name为张三的记录的记录m_pSet-Open();/打开
23、记录集VC+程序设计实用教程铁道出版社2008.9了解SQL 语句了解SQL 语句SQL(Structured Query Language)即结构化查询语言,SQL(Structured Query Language)即结构化查询语言,是关系数据库存储的工业标准。在数据库系统开发中常用的是SELECT语句。SELECT 命令用于对数据源的查询。它具有许多功能强大的语句,用它可以实现许多关系操作,以实现查询的目的。SELECT语句的基本结构如下:SELECT语句的基本结构如下:SELECT 子句INTO 子句 FROM 子句WHERE 子句 GROUP BY 子句 除了以上子句,SELECT语
24、句中经常GROUP BY子句HAVING 子句 ORDER BY 子句除了以上子句,SELECT语句中经常出现的关键字还包括UNION运算符、COMPUTE子句、FOR子句和OPTION子VC+程序设计实用教程铁道出版社2008.9COMPUTE子句、FOR子句和OPTION子句。SQL语句举例SQL语句举例排序 降序SELECT*FROM EmployeesSELECT*FROM Employees ORDER BY wage DESC排序 降序SELECT SUM(Wage)FROM Employees SELECT Dep_id AS 部门代号,AVG(Wage)AS 工资总额 FROM
25、 Emplo ees GROUP BY Dep id HAVING AVG(Wage)3000Employees GROUP BY Dep_id HAVING AVG(Wage)3000SELECT d.Dep_name,e.Emp_name,e.Title FROM Dtt AS d ElASFROM Department AS d,Employees AS e WHERE d.Dep_id=e.Dep_id 分组,求和联合查询VC+程序设计实用教程铁道出版社2008.9联合查询INSERT子句INSERT子句INSERT INTO dbf(f1 INSERT INTO dbf_name(f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 编程
限制150内