首页 第五章 数据库程序设计

第五章 数据库程序设计

举报
开通vip

第五章 数据库程序设计null第五章 数据库程序设计第五章 数据库程序设计数据库应用在程序设计中占用重要的地位,C#通过ADO.NET来支持对数据库的操作。ADO.NET是ADO的升级版本。在ADO.NET中,通过数据提供程序所提供的应用程序编程接口(API),可以轻松地访问数据库资源。目录目录ADO.NET概述 数据库的连接 直接访问模式 数据集模式 参数查询与存储过程调用 图像的读取和保存 读写XML文件 5.1 ADO.NET概述5.1 ADO.NET概述ADO.NET 是一组向 .NET 程序员公开数据访问服务的类。ADO.NE...

第五章 数据库程序设计
null第五章 数据库程序设计第五章 数据库程序设计数据库应用在程序设计中占用重要的地位,C#通过ADO.NET来支持对数据库的操作。ADO.NET是ADO的升级版本。在ADO.NET中,通过数据提供程序所提供的应用程序编程接口(API),可以轻松地访问数据库资源。目录目录ADO.NET概述 数据库的连接 直接访问模式 数据集模式 参数查询与存储过程调用 图像的读取和保存 读写XML文件 5.1 ADO.NET概述5.1 ADO.NET概述ADO.NET 是一组向 .NET 程序员公开数据访问服务的类。ADO.NET为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据、XML 和应用程序数据的访问,因此是 .NET Framework 中不可缺少的一部分。ADO.NET 支持多种开发需求,包括创建由应用程序、工具、语言或 Internet 浏览器使用的前端数据库客户端和中间层业务对象。 nullnull1..NET Framework 数据提供程序 .NET Framework 数据提供程序用于连接到数据库、执行命令和检索结果。 .NET Framework 提供了四个 .NET Framework 数据提供程序: SQL Server .NET Framework 数据提供程序 OLE DB .NET Framework 数据提供程序 ODBC .NET Framework 数据提供程序 Oracle .NET Framework 数据提供程序 null2. DataSet DataSet 对象是支持 ADO.NET 的断开式、分布式数据方案的核心对象。DataSet 是数据的内存驻留表示形式,无论数据源是什么,它都会提供一致的关系编程模型。它可以用于多个不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。DataSet 表示包括相关表、约束和表间关系在内的整个数据集。 null5.1.2 数据访问模式与策略 1.数据访问模式 ADO.NET提供两种数据访问模式:直接访问模式(连接)和数据集模式(非连接)。 2.数据访问策略 null5.1.3 使用ADO.NET访问数据库的一般步骤 根据使用的数据源,确定使用.NET 框架数据提供程序。 建立与数据源的连接,需要使用Connection对象。 执行对数据源的操作命令,通常是SQL命令,需要使用Command对象。 使用数据集对获得的数据进行操作,需要使用DataReader、DataSet等。 向用户显示数据,需要使用数据控件。 5.2 数据库的连接5.2 数据库的连接5.2.1 数据库连接的方法 在ADO.NET中,可以使用Conneciton对象连接到数据库。根据数据源的不同,连接对象有四种:SqlConneciton、OleDbConneciton、OdbcConneciton和OracleConneciton。连接对象的最主要属性是ConnectionString,用于设置连接字符串。对于不同的Connection对象,其连接字符串也有所不同。null例如: OleDbConnection myConnection = new OleDbConnection(); myConnection.ConnectionString="Driver={Microsoft Access Driver(*.mdb )};DBQ=c:\bin\nwind.mdb" 或 OleDbConnection myConnection = new OleDbConnection(); myConnection.ConnectionString="DSN=dsnname" null〖实例5-1〗连接数据库。 建立一个Windows应用程序,窗体上放置一个按钮,单击按钮时连接SQL Server中的Northwind数据库,连接成功,弹出对话框,显示“已正确建立连接”,否则显示错误信息。 5.3 直接访问模式 5.3 直接访问模式 5.3.1数据命令 数据命令对象可直接执行的 SQL 语句或存储过程,是 OleDbCommand、SqlCommand、OdbcCommand 或 OracleCommand 类以及其他类似类的实例。OleDbCommand 类可用于任何 OLE DB 提供程序,SqlCommand 类进行优化以便用于 SQL Server 7.0 或更高版本,OdbcCommand 类用于 ODBC 数据源,OracleCommand 类用于 Oracle 数据库。 null使用数据命令访问数据库的基本步骤是: (1)建立数据命令对象。 (2)设置数据命令对象的属性。 (3)执行命令。 (4)关闭有关对象,释放资源。 null5.3.2 DataReader对象 1.DataReader的基本用法 DataReader对象是一个简单的数据集,用于从数据源中检索只读、只向前数据集,常用于检索大量数据。 null主要的属性和方法有: FieldCount属性。获取当前行中的列数。 RecordsAffected属性。被更改、插入或删除的行数。 IsClosed属性。指示是否可关闭数据读取器。 Close方法。关闭DataReader对象。 GetName方法。获取指定列的名称。参数为列号。 GetOrdinal方法。在给定列名称的情况下获取列序号。参数为列名。 GetXXX方法。用于读取数据集的当前行的某一列的数据。参数为列号。 NextResult方法。当读取批处理 SQL 语句的结果时,使数据读取器前进到下一个结果。在查询多表时,很有用。多表之间的SQL语句用分号分隔。 Read方法。使OleDbDataReader 前进到下一条记录。 null【案例5-2】显示课程(Course)数据表中的数据。 建立一个Windows应用程序,读取 SQL Server 2000 中xsgl 数据库的Course表中的记录,将作者的号码、名和性显示在文本框中。 null2.获取多个结果集 如果返回的是多个结果集,DataReader会提供NextResult()方法来按顺序循环访问这些结果集。 null3.从DataReader中获取架构信息 当 DataReader打开时,可以使用GetSchemaTable方法检索有关当前结果集的架构信息。GetSchemaTable将返回一个填充了行和列的 DataTable 对象,这些行和列包含当前结果集的架构信息。对于结果集的每一列,DataTable 都将包含一行。架构表行的每一列都映射到在结果集中返回的列的属性,其中ColumnName是属性的名称,而列的值为属性的值。以下代码示例利用DataReader对象读取架构信息。null5.3.3 执行更新数据库的命令 可针对数据库执行不返回结果集的命令,这些命令类型包括: 数据库定义 (DDL) 命令,用于创建和管理数据库结构(如表和存储过程)。 更新命令(“更新”(Update)、“插入”(Insert) 和“删除”(Delete) 语句)。 对于这两种类型的命令,都需要调用ExecuteNonQuery()方法,而且返回一个整数指示操作的成功与否。返回值因是要更新记录还是发出 DDL 命令而异: 如果要创建或修改数据库结构,当操作成功时返回值为 -1。 如果要更新记录,则返回值指示受到该操作影响的记录数。 null【案例5-3 】创建表。 建立一个Windows程序,窗体上放置一个按钮,单击按钮将在SQL Server 2000 的xsgl数据库中建立一个新的表,表名为“Major”,包含两个字段:majorID和majorName。null【案例5-4 】学生数据维护。 建立一个Windows程序,窗体上放置5个标签,一个列表视图控件、5个文本框和3个按钮。能够对SQL Server 2000 中的xsgl数据库的 student表浏览、添加修改、删除记录。 5.4 数据集模式 5.4 数据集模式 Visual Studio .NET 应用程序中数据访问的常见模型是在数据集中存储数据并使用数据适配器读取和写入数据库中的数据。数据集在断开缓存中存储数据。数据集的结构类似于关系数据库的结构;它公开表、行和列的分层对象模型。另外,它包含为数据集定义的约束和关系。 null5.4.1 DataSet对象 DataSet是数据的一种内存驻留表示形式,无论它包含的数据来自什么数据源,它都会提供一致的关系编程模型。一个DataSet 表示整个数据集,其中包含对数据进行包含、排序和约束的表以及表间的关系。null1. 与数据集有关的对象 ADO.NET中与数据集有关的对象包括DataSet(数据集)、DataTable(数据表)、DataColumn(列)、Constraint(约束)、DataRelation(关系)、DataRow(数据行)。DataSet 类包含数据表的 Tables 集合和 DataRelation 对象的 Relations 集合。DataTable 类包含表行的 Rows 集合、数据列的 Columns 集合和数据关系的 ChildRelations 和 ParentRelations 集合。DataRow 类包含 RowState 属性,该属性的值指示自数据表首次从数据库加载后,行是否已更改以及是如何更改的。RowState 属性的可能值包括 Deleted、Modified、New 和 Unchanged。 null2. 创建数据集对象 以通过调用DataSet构造函数来创建DataSet 的实例。请指定一个可选名称参数。如果没有为DataSet指定名称,则该名称会设置为“NewDataSet”。 DataSet custDS = new DataSet("CustomerOrders"); null3.填充数据集 数据集是容器,因此需要用数据填充它。填充数据集时,将引发各种事件,应用约束检查,等等。可以用多种方法填充数据集: (1)调用数据适配器(DataAdapter)对象的 Fill 方法。这导致适配器执行 SQL 语句或存储过程,然后将结果填充到数据集中的表中。如果数据集包含多个表,每个表可能有单独的数据适配器,因此必须分别调用每个适配器的 Fill 方法。 (2)通过创建DataRow 对象并将它们添加到表的Rows 集合,手动填充数据集中的表。 (3)将 XML 文档或流读入数据集。 (4)合并(复制)另一个数据集的内容。null4.访问数据 数据集是断开式的数据容器,没有当前记录的概念,也不存在记录导航的概念,数据集中的所有记录可以随机访问。 ADO.NET使用对象访问数据集中的数据表、数据行和列。数据集包含数据表的集合,数据表包含数据行和列的集合,即DataSet对象包含数据表的集合Tables,而DataTable对象包含数据行的集合Rows、数据列的集合Columns。因此可以直接使用这些对象访问数据集中的数据。例如,访问student数据表的第三行的stud_name列的值,可以使用以下语句: myDS.Tables["student"].Rows[2]["studName"];null也可以使用以下语句: myDs.Tables["student"].Rows[3].ItemArray[1]; myDs.Tables["student"].Rows[i][j] myDs.Tables["student"].Rows.count myDs.Tables["student"].Columns[K].ColumnName; null5. 数据表的操作 DataSet类的Tables属性是一个包含数据表的集合,它所存储的是DataTable类对象。DataTable类用于数据表的字段(列)和记录(行)的操作。 (1)添加表 DataSet custDS=new DataSet("CustomersOrders"); DataTable ordersTable=custDS.Tables.Add("Orders"); DataColumn pkCol=ordersTable.Columns.Add("OrderID",typeof(Int32)); ordersTable.Columns.Add("OrderQuantity",typeof(Int32)); ordersTable.Columns.Add("CompanyName",typeof(string)); ordersTable.PrimaryKey=new DataColumn[]{pkCol};null(2)字段操作 DataTable类的Columns属性是一个包含数据表的列的集合,它所存储的是DataColumn对象。 DataSet ds=new DatasSet(); DataTable myTable=ds.Tables.Add("Product"); DataColumn myColumn = new DataColumn(); myColumn.DataType = System.Type.GetType("System.Decimal"); myColumn.AllowDBNull = false; myColumn.Caption = "Price"; myColumn.ColumnName = "Price"; myColumn.DefaultValue = 25; myTable.Columns.Add(myColumn); DataRow myRow; for(int i = 0; i < 10; i++){ myRow = myTable.NewRow(); myRow["Price"] = i + 1; myTable.Rows.Add(myRow); }null(3)行操作 添加记录行 向数据集中添加数据,实际上就是对某个数据表添加一个新行。具体步骤如下: 第一步:建立一个新的空数据行: DataRow myDR=myDS.Tables["student"].NewRow(); 第二步:向数据行中写如数据: myDR["studID"]="20040209"; myDR["studName"]="李大力"; myDR["studSex"]= "男"; myDR["studAddress "]= "自动化"; myDR["enderScore"]=546; 第三步:把数据行添加到数据表中: myDS.Tables["student"].Rows.Add(myDR);null删除记录行 删除数据只调用数据行的Delete方法即可,例如: myDS.Tables["student"].Rows[10].Delete();//删除student表中的第11行。 修改记录行 将数据直接写如相应的位置,如: myDS.Tables["student"].Rows[3]["stud_name"]="王小力"; 查找记录行 myDS.Tables["student"].Rows.find("王小力");//find方法只能查找主键。null(4)更新数据源 数据集的操作是在内存中完成的,更新后的数据集要写回到数据源中,才能永久保存。可以调用数据适配器的Update方法完成此工作。它检查数据表中的每一行,如果有更改的行,就将该行更新到数据源中。例如: myDA.Update(myDS); myDA.Update(myDS,"student");//指明更新student表。 null5.4.2 数据适配器(DataAdapter) 数据适配器是DataSet和数据源之间的一个桥梁。DataAdapter对象用于从数据源中检索数据并填充 DataSet 中的表。DataAdapter 还会将对 DataSet 作出的更改解析回数据源。DataAdapter 使用 .NET Framework 数据提供程序的 Connection 对象连接到数据源,使用 Command 对象从数据源中检索数据并将更改解析回数据源。 nullDataAdapter 的 SelectCommand 属性是一个 Command 对象,它从数据源中检索数据。DataAdapter 的 InsertCommand、UpdateCommand 和 DeleteCommand 属性也是 Command 对象,它们按照对 DataSet 中数据的修改来管理对数据源中数据的更新。null1.建立DataAdapter 以SqlDataAdapter为例,有如下构造函数: public SqlDataAdapter():初始化 SqlDataAdapter类的新实例。 public SqlDataAdapter(SqlCommand):指定的 SqlCommand作为 SelectCom mand属性,初始化 SqlDataAdapter类的新实例。 public SqlDataAdapter(string, SqlConnection):使用 SelectCommand和SqlCon nection对象初始化 SqlDataAdapter类的新实例。 public SqlDataAdapter(string, string):用SelectCommand和一个连接字符串初始化 SqlDataAdapter类的新实例。 null2. DataAdapter对象的属性设置 在建立SqlDataAdapter对象时,可以直接指定与 SqlConnection和 SqlCommand。如果过后指定属性,主要有SelectCommand、InsertCommand、DeleteCommand和UpdateCommand 属性。 例如: sqlDataAdapter.SelectCommand=sqlCommand;// sqlDataAdapter为DataAdapter对象,sqlCommand为执行Select语句的命令对象。 null3.用DataAdapter 填充 DataSet sqlDataAdaper.Fill(dsStudent, "student");//用sqlDataAdaper填充数据集null5.4.3 数据绑定 数据绑定就是在数据源和界面控件之间建立一个同步、双向、互动的联系,以便更方便地访问数据。在 Windows 窗体中,不仅可以绑定到传统的数据源,还可以绑定到几乎所有包含数据的结构。不但控件的显示属性(例如,TextBox 控件的Text 属性)可绑定到数据源,而且控件的任何属性都可以绑定到数据源。窗体可以利用两种类型的数据绑定:简单绑定和复杂绑定。null1.简单数据绑定 简单数据绑定指将一个控件绑定到单个数据元素(如数据集表的列中的值)的能力。这是用于 TextBox 控件或 Label 控件等控件(即通常只显示单个值的控件)的典型绑定类型。事实上,控件上的任何属性都可以绑定到数据库中的字段。有关简单数据绑定的更多信息,请参见在 Windows 窗体上创建简单绑定控件。null2.数据导航 前后移动数据记录或将记录指针移到指定的位置,即为数据导航。对于简单的数据绑定,一般使用BindingManagerBase类来实现数据导航。该类是CuurencyManager类的基类,是一个抽象类,无法实例化,在程序可以使用窗体的BindingContext属性获得。 null3.复杂数据绑定 复杂数据绑定指将一个控件绑定到多个数据元素的能力,通常绑定到数据库中的多条记录,或者绑定到多个任何其他类型的可绑定数据元素。支持复杂绑定的控件的示例有 DataGrid、ListBox和ComboBox控件。 对于常见的ComboBox、ListBox控件来说,建立复杂数据绑定主要是用到DataSource属性和DisplayMember属性,而不像简单的绑定那样,把DataBinding对象加到DataBindings集合。 DataSource属性指定要绑定的数据源,DisplayMember属性指定绑定的数据字段。例如: comboBox1.DataSource=DataSet1.Tables["Customers"]; comboBox1.DisplayMember="CustomID";null【案例5-5】学生成绩维护。 建立一个Windows程序,能够对学生成绩进行浏览、添加、修改和删除。窗口上放置一个DataGrid控件、2个组控件、3个标签、3个文本框和10按钮。 null5.4.4 数据视图 在很多情况下,DataSet的表DataTable在页面显示的数据不直接由DataTable提供,而是由DataView提供。因为DataTable不支持数据筛选,而DataView支持数据筛选。DataView 使您能够创建 DataTable 中所存储的数据的不同视图,这种功能通常用于数据绑定应用程序。null1.创建视图 建立数据视图的有如下方法: 将数据表的默认视图指定给DataView对象 DataView myDataView; MyDataView=myDS.Tables["student"].DefualtView; 用指定的DataTable初始化DataView类的新实例。 DataView mtDataView=new DataView(mtDataTable); 用指定的DataTable、RowFilter、Sort和DataViewRowState初始化DataView类的新实例。 DataView custDV = new DataView(custDS.Tables["Customers"], "Country = 'USA'", "ContactName",DataViewRowState.CurrentRows); null2.设置过滤或排序条件 数据视图最常用的操作是数据过滤。默认情况下数据视图对象中的数据与关联的DataTable中的数据一样。通过指定过滤条件,可以根据不同的数据使用需要对数据进行过滤。执行过滤的方式有两种:行状态方式(RowState)和行过滤器方式(RowFilter)。 null【案例5-6】用显示学生档案信息。 建立一个Windows程序,显示学生档案信息,能够按地址或入学成绩排序,能够根据给定筛选条件对记录进行筛选。 null6.4.5 数据关系 DataRelation 的主要功能之一是允许您在 DataSet 中从一个 DataTable 导航至另一个 DataTable。它使您能够在给定相关DataTable 中的单个 DataRow 的情况下检索一个 DataTable 中的所有相关 DataRow 对象。例如,当建立用户表和订单表之间的 DataRelation 后,可以使用 DataRow.GetChildRows 检索特定用户行的所有订单行。 null可以使用DataSet对象的Relations属性,为数据集中的表建立关系。该属性是一个DataRelation 对象的集合,添加关系时需调用该对象的Add()方法,这个方法的完整格式为: public virtual DataRelation Add(string, DataColumn, DataColumn, bool); 参数分别指定的名称、父列、子列以及是否添加约束。 例如,以下代码创建 DataSet 中 Customers 表和 Orders 表之间的 DataRelation,并返回每个客户的所有订单。以CustomerID为关联字段,对于 Customers 表中的每个客户,将确定 Orders 表中的所有子行,以返回特定客户的订单数以及他们的 OrderID 值。null【案例5-7】浏览学生成绩。 建立一个Windows程序,对于SQL Server 2000中的xsgl数据库,浏览学生成绩。上下翻页,查看学生的学号和姓名,同时显示该学生的所有成绩。 5.5 参数查询与存储过程调用5.5 参数查询与存储过程调用参数查询是指在SQL语句中以占位符表示要查询的值,称为参数,执行时再传入要查询的实际值,这给查询带来很大的方便性。存储过程允许用任意的商业逻辑扩展SQL。存储过程是在数据库中执行,所以具有很高的效率。合理地使用存储过程是优化数据库操作的关键。null5.5.1 参数查询 若要创建每次使用不同值的查询,可以在查询中使用参数。参数是在运行查询时所提供值的占位符。带参数的 SQL 语句可能如下所示,其中“?”表示代表作者 ID 的参数: SELECT title_id FROM titleauthor WHERE (au_id = ?) 需要注意的是OLE BD.NET数据提供程序使用问号(?)占位符指定参数,而SQL Server.NET数据提供程序使用命令参数(前面冠以@符号)指定参数,例如: SELECT title_id FROM titleauthor WHERE (au_id = @au_id) null【案例5-8】学生数据查询 建立一个Windows程序,能够对学生档案进行查询。界面上放置1个组控件(GroupBox),3个标签(Label),2个文本框(TextBox),1个组合框(ConboBox),1个按钮(Button),1个数据网格(DataGrid)。 null5.5.2 调用存储过程 使用存储过程可以提高数据库操作的速度和效率。合理设计存储过程需要学习数据库的知识。下面是SQL Server存储过程的一般格式: CREATE PROC [ EDURE ] procedure_name [ ; number ]  [ { @parameter data_type }  [ VARYING ] [ = default ] [ OUTPUT ]] [ ,...n ] [ WITH     { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] null例如,在Sql Server中定义存储过程: CREATE PROCEDURE aaaa @yourname varchar(50), @myname varchar(50) output AS BEGIN SELECT '您好,'+@yourname+',非常高兴认识您,^_^' SET @myname = '何志强' RETURN 1 ENDnull在C#中利用可命令对象执行数据库中的存储过程。主要的步骤是: (1)建立命令对象,并指定其Connection属性为已建立的连接对象。 (2)将CommandType 属性设置为CommandType.StoredProcedure(对于存储过程)。 (3)将数据命令对象的CommandText 属性设置存储过程的名称。 (4)如果命令采用参数,则设置参数。 (5)创建一个数据读取器对象。 (6)打开与数据命令关联的连接。 (7)调用命令的ExecuteReader()方法,将结果设置 (5)步中创建的数据读取器。 (8)使用数据读取器的 Read()方法依次通过数据读取器,直到该方法返回假。 (9)关闭读取器。 (10)关闭连接。 null例如,对于上面的存储过程,可以如下设置参数: sqlCommand.CommandType=CommandType.StoredProcedure; sqlCommand.CommandText="aaaa"; sqlCommand.Parameters.Add("@num",System.Data.SqlDbType.Int); sqlCommand.Parameters["@num"].Direction=ParameterDirection.ReturnValue; sqlCommand.Parameters.Add("@yourname",System.Data.SqlDbType.VarChar, 30); sqlCommand.Parameters.Add("@myname",System.Data.SqlDbType. VarChar,30); sqlCommand.Parameters["@myname"].Direction=ParameterDirection.Output; null【案例5-9】成绩查询。 建立一个Windows应用程序,利用存储过程查询学生成绩。窗体上放置1个标签、1个组合框和一个数据网格控件。 5.6 图像的读取和保存5.6 图像的读取和保存5.6.1 读取图像 DataReader 的默认行为是在整个数据行可用时立即以行的形式加载传入数据。但是,对于二进制大对象 (BLOB) 则需要进行不同的处理,因为它们可能包含数十亿字节的数据,而单个行中无法包含如此多的数据。Command.ExecuteReader()方法具有一个重载,它将采用 CommandBehavior 参数来修改DataReader 的默认行为。可以将 CommandBehavior.SequentialAccess 传递到 ExecuteReader()方法来修改 DataReader 的默认行为,以便让 DataReader 按照顺序在接收到数据时立即将其加载,而不是加载数据行。这是加载 BLOB 或其他大数据结构的理想方案。null5.6.2 保存图像 可以将二进制大对象 (BLOB) 作为二进制或字符数据写入数据库,具体视数据源的字段类型而定。若要将 BLOB 值写入数据库,请发出相应的 INSERT 或 UPDATE 语句并将 BLOB 值作为输入参数传递(请参见将存储过程用于命令)。如果 BLOB 存储为文本格式(如 SQL Server text 字段),则可将 BLOB 作为字符串参数传递。如果 BLOB 存储为二进制格式(如 SQL Server image 字段),则可将类型 byte 的数组作为二进制参数传递。null【案例5-10】存取照片。 在xsgl数据库中建立表studentPhoto,建立语句如下: create table studentPhoto ( studID varchar(10) primary key,--既是标识也是主键约束 studName varchar(10) not null,--非空约束 studPhoto image ) 建立一个Windows应用程序,能够对表studentPhoto浏览、添加和删除记录。 5.7 读写XML文件5.7 读写XML文件5.7.1读取XML数据 Microsoft SQL Server 2000 引入了在检索数据时对 XML 功能的支持。为了使您能够直接从 Microsoft SQL Server 2000 中返回 XML 流,SQL Server .NET Framework 数据提供程序的 SqlCommand 对象具有 ExecuteXmlReader 方法。ExecuteXmlReader 返回已填充了为 SqlCommand 指定的 SQL 语句的结果的 System.Xml.XmlReader 对象。ExecuteXmlReader 只能用于以 XML 数据形式返回结果的语句。nullADO.NET DataSet 的内容可以从 XML 流或文档创建。此外,利用 .NET Framework,您可以相当灵活地控制从 XML 中加载哪些信息以及如何创建 DataSet 的架构(即关系结构)。若要将 XML 数据或同时将架构和数据读入 DataSet,请使用ReadXml()方法。若要只读取架构,请使用ReadXmlSchema()方法。null【案例5-11】显示XML数据和结构。 创建一个Windows应用程序,窗体上放置一个用于显示XML文件内容的DataGrid控件,一个用于显示XML文件的架构的TextBox控件。文本的Muiltline设置为True。 null5.7.2保存XML DataSet的WriteXml()方法提供了只将数据或同时将数据和架构从 DataSet写入 XML 文档的方法,而 WriteXmlSchema()方法仅写架构。若要同时写数据和架构,请使用包括 WriteXmlMode 参数的重载之一,并将其值设置为WriteSchema。 null【案例5-12】将数据表保存成XML文件。 建立一个Windows应用程序,利用DataGrid显示student表的数据,单击“保存成XML文件”按钮,可将数据表保存成指定的XML文件。
本文档为【第五章 数据库程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_859980
暂无简介~
格式:ppt
大小:272KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2011-04-08
浏览量:18