C程序设计 第五章 数据库程序设计.ppt
《C程序设计 第五章 数据库程序设计.ppt》由会员分享,可在线阅读,更多相关《C程序设计 第五章 数据库程序设计.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#程序设计与案例教程清华大学出版社第五章第五章 数据库程序设计数据库程序设计数据库应用在程序设计中占用重要的地位,数据库应用在程序设计中占用重要的地位,C#C#通过通过ADO.NETADO.NET来支持对数据库的操作。来支持对数据库的操作。ADO.NETADO.NET是是ADOADO的升级版本。在的升级版本。在ADO.NETADO.NET中,中,通过数据提供程序所提供的应用程序编程接口通过数据提供程序所提供的应用程序编程接口(APIAPI),可以轻松地访问数据库资源。),可以轻松地访问数据库资源。1 1版权所有版权所有C#程序设计与案例教程清华大学出版社目录n nADO.NETADO.NET
2、概述概述n n数据库的连接数据库的连接n n直接访问模式直接访问模式n n数据集模式数据集模式n n参数查询与存储过程调用参数查询与存储过程调用n n图像的读取和保存图像的读取和保存n n读写读写XMLXML文件文件 2 2版权所有版权所有C#程序设计与案例教程清华大学出版社5.1 ADO.NET概述概述n nADO.NETADO.NET是一组向是一组向.NET.NET程序员公开数据访问程序员公开数据访问服务的类。服务的类。ADO.NETADO.NET为创建分布式数据共享应为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关用程序提供了一组丰富的组件。它提供了对关系数据、系数据、XM
3、LXML和应用程序数据的访问,因此是和应用程序数据的访问,因此是.NETFramework.NETFramework中不可缺少的一部分。中不可缺少的一部分。ADO.NETADO.NET支持多种开发需求,包括创建由应支持多种开发需求,包括创建由应用程序、工具、语言或用程序、工具、语言或 InternetInternet浏览器使用的浏览器使用的前端数据库客户端和中间层业务对象。前端数据库客户端和中间层业务对象。3 3版权所有版权所有C#程序设计与案例教程清华大学出版社4 4版权所有版权所有C#程序设计与案例教程清华大学出版社1.NET Framework 数据提供程序数据提供程序n n.NETFr
4、amework.NETFramework数据提供程序用于连接到数数据提供程序用于连接到数据库、执行命令和检索结果。据库、执行命令和检索结果。n n.NETFramework.NETFramework提供了四个提供了四个.NETFramework.NETFramework数据提供程序:数据提供程序:SQLServer.NETFrameworkSQLServer.NETFramework数据提供程序数据提供程序 OLEDB.NETFrameworkOLEDB.NETFramework数据提供程序数据提供程序 ODBC.NETFrameworkODBC.NETFramework数据提供程序数据提供程
5、序 Oracle.NETFrameworkOracle.NETFramework数据提供程序数据提供程序 5 5版权所有版权所有C#程序设计与案例教程清华大学出版社2.DataSetn nDataSetDataSet 对象是支持对象是支持 ADO.NETADO.NET的断开式、分的断开式、分布式数据方案的核心对象。布式数据方案的核心对象。DataSetDataSet 是数据的是数据的内存驻留表示形式,无论数据源是什么,它都内存驻留表示形式,无论数据源是什么,它都会提供一致的关系编程模型。它可以用于多个会提供一致的关系编程模型。它可以用于多个不同的数据源,用于不同的数据源,用于 XMLXML数据
6、,或用于管理数据,或用于管理应用程序本地的数据。应用程序本地的数据。DataSetDataSet 表示包括相关表示包括相关表、约束和表间关系在内的整个数据集。表、约束和表间关系在内的整个数据集。6 6版权所有版权所有C#程序设计与案例教程清华大学出版社5.1.2 数据访问模式与策略1 1数据访问模式数据访问模式数据访问模式数据访问模式ADO.NETADO.NET提供两种数据访问模式:直接访问模提供两种数据访问模式:直接访问模式(连接)和数据集模式(非连接)。式(连接)和数据集模式(非连接)。2 2数据访问策略数据访问策略数据访问策略数据访问策略 7 7版权所有版权所有C#程序设计与案例教程清华
7、大学出版社5.1.3 使用ADO.NET访问数据库的一般步骤n n根据使用的数据源,确定使用根据使用的数据源,确定使用.NET.NET框架数据框架数据提供程序。提供程序。n n建立与数据源的连接,需要使用建立与数据源的连接,需要使用ConnectionConnection对象。对象。n n执行对数据源的操作命令,通常是执行对数据源的操作命令,通常是SQLSQL命令,命令,需要使用需要使用CommandCommand对象。对象。n n使用数据集对获得的数据进行操作,需要使使用数据集对获得的数据进行操作,需要使用用DataReaderDataReader、DataSetDataSet等。等。n n
8、向用户显示数据,需要使用数据控件。向用户显示数据,需要使用数据控件。8 8版权所有版权所有C#程序设计与案例教程清华大学出版社5.2 数据库的连接数据库的连接5.2.1 数据库连接的方法n n在在ADO.NETADO.NET中,可以使用中,可以使用ConnecitonConneciton对象连接对象连接到数据库。根据数据源的不同,连接对象有四到数据库。根据数据源的不同,连接对象有四种:种:SqlConnecitonSqlConneciton、OleDbConnecitonOleDbConneciton、OdbcConnecitonOdbcConneciton和和OracleConneciton
9、OracleConneciton。连接对。连接对象的最主要属性是象的最主要属性是ConnectionStringConnectionString,用于设,用于设置连接字符串。对于不同的置连接字符串。对于不同的ConnectionConnection对象,对象,其连接字符串也有所不同。其连接字符串也有所不同。9 9版权所有版权所有C#程序设计与案例教程清华大学出版社例如:例如:OleDbConnectionOleDbConnection myConnectionmyConnection=new=newOleDbConnectionOleDbConnection();();myConnection
10、.ConnectionStringmyConnection.ConnectionString=Driver=Micros=Driver=MicrosoftAccessDriver(*.oftAccessDriver(*.mdbmdb);DBQ=);DBQ=c:binnwind.mdbc:binnwind.mdb 或或OleDbConnectionOleDbConnection myConnectionmyConnection=new=newOleDbConnectionOleDbConnection();();myConnection.ConnectionStringmyConnection.
11、ConnectionString=DSN=DSN=dsnnamdsnname e 1010版权所有版权所有C#程序设计与案例教程清华大学出版社实例实例实例实例5-15-1连接数据库。连接数据库。n n建立一个建立一个WindowsWindows应用程应用程序,窗体上放置一个按钮,序,窗体上放置一个按钮,单击按钮时连接单击按钮时连接SQLSQLServerServer中的中的NorthwindNorthwind数据数据库,连接成功,弹出对话库,连接成功,弹出对话框,显示框,显示“已正确建立连已正确建立连接接”,否则显示错误信息。,否则显示错误信息。1111版权所有版权所有C#程序设计与案例教程清
12、华大学出版社5.3直接访问模式5.3.1数据命令n n数据命令对象可直接执行的数据命令对象可直接执行的 SQLSQL语句或存储语句或存储过程,是过程,是 OleDbCommandOleDbCommand、SqlCommandSqlCommand、OdbcCommandOdbcCommand 或或 OracleCommandOracleCommand 类以及其类以及其他类似类的实例。他类似类的实例。OleDbCommandOleDbCommand 类可用于类可用于任何任何 OLEDBOLEDB提供程序,提供程序,SqlCommandSqlCommand 类进类进行优化以便用于行优化以便用于 SQ
13、LServer7.0SQLServer7.0或更高版本,或更高版本,OdbcCommandOdbcCommand 类用于类用于 ODBCODBC数据源,数据源,OracleCommandOracleCommand 类用于类用于 OracleOracle数据库。数据库。1212版权所有版权所有C#程序设计与案例教程清华大学出版社使用数据命令访问数据库的基本步骤是:(1)建立数据命令对象。(2)设置数据命令对象的属性。(3)执行命令。(4)关闭有关对象,释放资源。1313版权所有版权所有C#程序设计与案例教程清华大学出版社5.3.2 DataReader对象1 1DataReaderDataRea
14、der的基本用法的基本用法的基本用法的基本用法 DataReaderDataReader对象是一个简单的数据集,用于对象是一个简单的数据集,用于对象是一个简单的数据集,用于对象是一个简单的数据集,用于从数据源中检索只读、只向前数据集,常用于从数据源中检索只读、只向前数据集,常用于从数据源中检索只读、只向前数据集,常用于从数据源中检索只读、只向前数据集,常用于检索大量数据。检索大量数据。检索大量数据。检索大量数据。1414版权所有版权所有C#程序设计与案例教程清华大学出版社主要的属性和方法有:主要的属性和方法有:n nFieldCountFieldCount属性。获取当前行中的列数。属性。获取当
15、前行中的列数。n nRecordsAffectedRecordsAffected属性。被更改、插入或删除的行数。属性。被更改、插入或删除的行数。n nIsClosedIsClosed属性。指示是否可关闭数据读取器。属性。指示是否可关闭数据读取器。n nCloseClose方法。关闭方法。关闭DataReaderDataReader对象。对象。n nGetNameGetName方法。获取指定列的名称。参数为列号。方法。获取指定列的名称。参数为列号。n nGetOrdinalGetOrdinal方法。在给定列名称的情况下获取列序号。方法。在给定列名称的情况下获取列序号。参数为列名。参数为列名。n
16、nGetXXXGetXXX方法。用于读取数据集的当前行的某一列的数方法。用于读取数据集的当前行的某一列的数据。参数为列号。据。参数为列号。n nNextResultNextResult方法。当读取批处理方法。当读取批处理 SQLSQL语句的结果时,语句的结果时,使数据读取器前进到下一个结果。在查询多表时,很使数据读取器前进到下一个结果。在查询多表时,很有用。多表之间的有用。多表之间的SQLSQL语句用分号分隔。语句用分号分隔。n nReadRead方法。使方法。使OleDbDataReaderOleDbDataReader 前进到下一条记录。前进到下一条记录。1515版权所有版权所有C#程序设
17、计与案例教程清华大学出版社【案例案例案例案例5-25-2】显示课程显示课程(CourseCourse)数据表中的)数据表中的数据。数据。n n建立一个建立一个WindowsWindows应用应用程序,读取程序,读取 SQLSQLServer2000Server2000中中xsglxsgl 数数据库的据库的CourseCourse表中的表中的记录,将作者的号码、记录,将作者的号码、名和性显示在文本框中。名和性显示在文本框中。1616版权所有版权所有C#程序设计与案例教程清华大学出版社2获取多个结果集获取多个结果集n n如果返回的是多个结果集,如果返回的是多个结果集,DataReaderDataR
18、eader会提供会提供NextResultNextResult()()方法来按顺序循环访问这些结果集。方法来按顺序循环访问这些结果集。1717版权所有版权所有C#程序设计与案例教程清华大学出版社3从从DataReader中获取架构信息中获取架构信息n n当当 DataReaderDataReader打开时,可以使用打开时,可以使用GetSchemaTableGetSchemaTable方法检索有关当前结果集的方法检索有关当前结果集的架构信息。架构信息。GetSchemaTableGetSchemaTable将返回一个填充将返回一个填充了行和列的了行和列的 DataTableDataTable
19、对象,这些行和列包含对象,这些行和列包含当前结果集的架构信息。对于结果集的每一列,当前结果集的架构信息。对于结果集的每一列,DataTableDataTable 都将包含一行。架构表行的每一列都将包含一行。架构表行的每一列都映射到在结果集中返回的列的属性,其中都映射到在结果集中返回的列的属性,其中ColumnNameColumnName是属性的名称,而列的值为属性是属性的名称,而列的值为属性的值。以下代码示例利用的值。以下代码示例利用DataReaderDataReader对象读取对象读取架构信息。架构信息。1818版权所有版权所有C#程序设计与案例教程清华大学出版社5.3.3 5.3.3 执
20、行更新数据库的命令执行更新数据库的命令 n n可针对数据库执行不返回结果集的命令,这些命令类可针对数据库执行不返回结果集的命令,这些命令类型包括:型包括:n n数据库定义数据库定义(DDL)(DDL)命令,用于创建和管理数据库结构命令,用于创建和管理数据库结构(如表和存储过程)。(如表和存储过程)。n n更新命令(更新命令(“更新更新”(Update)(Update)、“插入插入”(Insert)(Insert)和和“删除删除”(Delete)(Delete)语句)。语句)。n n对于这两种类型的命令,都需要调用对于这两种类型的命令,都需要调用ExecuteNonQueryExecuteNon
21、Query()()方法,而且返回一个整数指示操作的成功与否。返回方法,而且返回一个整数指示操作的成功与否。返回值因是要更新记录还是发出值因是要更新记录还是发出 DDLDDL命令而异:命令而异:n n如果要创建或修改数据库结构,当操作成功时返回值如果要创建或修改数据库结构,当操作成功时返回值为为-1-1。n n如果要更新记录,则返回值指示受到该操作影响的记如果要更新记录,则返回值指示受到该操作影响的记录数。录数。1919版权所有版权所有C#程序设计与案例教程清华大学出版社【案例案例案例案例5-3 5-3】创建表。创建表。n n建立一个建立一个WindowsWindows程序,程序,窗体上放置一个
22、按钮,窗体上放置一个按钮,单击按钮将在单击按钮将在SQLSQLServer2000Server2000的的xsglxsgl数数据库中建立一个新的表,据库中建立一个新的表,表名为表名为“Major”Major”,包,包含两个字段:含两个字段:majorIDmajorID和和majorNamemajorName。2020版权所有版权所有C#程序设计与案例教程清华大学出版社【案例案例案例案例5-4 5-4】学生数据维学生数据维护。护。n n建立一个建立一个WindowsWindows程序,程序,窗体上放置窗体上放置5 5个标签,个标签,一个列表视图控件、一个列表视图控件、5 5个文本框和个文本框和3
23、 3个按钮。个按钮。能够对能够对SQLServerSQLServer20002000中的中的xsglxsgl数据库数据库的的 studentstudent表浏览、添表浏览、添加修改、删除记录。加修改、删除记录。2121版权所有版权所有C#程序设计与案例教程清华大学出版社5.4数据集模式n nVisualStudio.NETVisualStudio.NET应用程序中数据访问的常应用程序中数据访问的常见模型是在数据集中存储数据并使用数据适配见模型是在数据集中存储数据并使用数据适配器读取和写入数据库中的数据。数据集在断开器读取和写入数据库中的数据。数据集在断开缓存中存储数据。数据集的结构类似于关系数
24、缓存中存储数据。数据集的结构类似于关系数据库的结构;它公开表、行和列的分层对象模据库的结构;它公开表、行和列的分层对象模型。另外,它包含为数据集定义的约束和关系。型。另外,它包含为数据集定义的约束和关系。2222版权所有版权所有C#程序设计与案例教程清华大学出版社5.4.1 DataSet对象n nDataSetDataSet是数据的一种内存驻留表示形式,无是数据的一种内存驻留表示形式,无论它包含的数据来自什么数据源,它都会提供论它包含的数据来自什么数据源,它都会提供一致的关系编程模型。一个一致的关系编程模型。一个DataSetDataSet 表示整个表示整个数据集,其中包含对数据进行包含、排
25、序和约数据集,其中包含对数据进行包含、排序和约束的表以及表间的关系。束的表以及表间的关系。2323版权所有版权所有C#程序设计与案例教程清华大学出版社1.1.与数据集有关的对象与数据集有关的对象与数据集有关的对象与数据集有关的对象ADO.NETADO.NET中与数据集有关的对象包括中与数据集有关的对象包括DataSetDataSet(数据集)、(数据集)、DataTableDataTable(数据表)、(数据表)、DataColumnDataColumn(列)、(列)、ConstraintConstraint(约束)、(约束)、DataRelationDataRelation(关系)、(关系)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C程序设计 第五章 数据库程序设计 程序设计 第五 数据库
限制150内