数据库操作学习教案.pptx
数据库操作数据库操作(cozu)第一页,共77页。访问(fngwn)模式数据库数据库SQL SERVERACCESSORACLEMYSQL文本文件文本文件数据数据(shj)访访问接口问接口ADOADO.NETJDBC数据库连接数据库连接(linji)对象对象SQL命令对象命令对象查询结果集对象查询结果集对象数据绑定及显示控件数据绑定及显示控件第1页/共77页第二页,共77页。ADO.NET 结构(jigu)使用统一的 SQL 数据(shj)访问模型实现对各种使用 SQL 语句的数据(shj)库的数据(shj)访问支持。第2页/共77页第三页,共77页。ADO.NET 对象(duxing)模型第3页/共77页第四页,共77页。2.NET 关于(guny)数据库主要的类.NET 有关数据库访问的中间件叫ADO.NET,它是 ADO 的改进 ADO.NET 有关数据库访问的类分为两组:一组是通用的数据库访问类,可以访问所有主流的数据库,但一般用于Access 等。另一组是针对具体数据库专门优化了访问性能的类,专用于 SQL Server 或 Oracle 数据库,是我们主要(zhyo)使用的方式。第4页/共77页第五页,共77页。.Net 中 SQL Server 数据库的分类(fn li).Net 提供了 3 种与 SQL Server 数据库的连接形式(xngsh)。分别为:SQL Server:与 SQL Server 服务器上的数据库连接,这是主流的、也是我们采用的。SQL Server Compact 3.5:更简单的 SQL Server 数据库版本,是基于文件的数据库。SQL Server数据库文件:用于和SQL Server Express 数据库文件建立连接。本书均用SQL Server Express(需要安装),我们不使用该方式,本章与书中差异较大!第5页/共77页第六页,共77页。通用通用(tngyng)(tngyng)的数据库访问类的数据库访问类名称空间:名称空间:Syetem.Data.OleDbSyetem.Data.OleDbOleDbConnectionOleDbConnection:数据库连接:数据库连接/关闭关闭OleDbCommandOleDbCommand:发送:发送 SQL SQL 命令或调用存储过程、视命令或调用存储过程、视图等图等OleDbDataAdapterOleDbDataAdapter:存储数据结果集并填充:存储数据结果集并填充DataSetDataSetOleDbDataReaderOleDbDataReader:存储只能向前读的数据结果集,速:存储只能向前读的数据结果集,速度快(保持连接)度快(保持连接)名称空间:名称空间:Syetem.Data Syetem.DataDataSetDataSet:是内存:是内存(ni cn)(ni cn)中的中的“关系数据库关系数据库”,数据,数据由由OleDbDataAdapter OleDbDataAdapter 填充,也可以自己添加删除。填充,也可以自己添加删除。在断开数据库连接的情况下,在断开数据库连接的情况下,DataSet DataSet仍然存在仍然存在第6页/共77页第七页,共77页。SQLServer专用(zhunyng)访问类名称空间:Syetem.Data.SqlClient SqlConnection:数据库连接/关闭 SqlCommand:发送 SQL 命令或调用存储过程、视图 SqlDataAdapter:存储数据结果集并填充DataSet SqlDataReader:存储只能向前读的数据结果集,速度快 名称空间:Syetem.Data DataSet:实际上是通用的,与前面(qin mian)相同第7页/共77页第八页,共77页。通用的数据库访问实例通用的数据库访问实例(shl)(shl)对象间的关系对象间的关系各各种种(zhn)数数据据库库AOD.NETOleDbConnectionOleDbCommandOleDbDataAdapterOleDbDataReaderDataSet连接连接(linji)SQL命令命令查询查询结果集结果集结果集结果集填充填充数据绑定及显示控数据绑定及显示控件件绑定绑定结果集结果集绑定绑定用UML可表示为顺序图第8页/共77页第九页,共77页。SQL Server SQL Server 数据库访问数据库访问(fngwn)(fngwn)实例对象间的关系实例对象间的关系SQLServerAOD.NETSqlConnectionSqlCommandSqlDataAdapterSqlDataReaderDataSet连接连接(linji)SQL命令命令(mng lng)查询查询结果集结果集结果集结果集填充填充数据绑定及显示控数据绑定及显示控件件绑定绑定结果集结果集绑定绑定用UML可表示为顺序图第9页/共77页第十页,共77页。3.利用可视化对象(duxing)直接建立数据访问数据(shj)访问可视化工具第10页/共77页第十一页,共77页。操作(cozu)演示新建一个 Windows 应用程序在菜单(ci dn)“视图”中打开“服务器资源管理器”确保本机的 SQL SERVER 服务已开启,数据库可访问。第11页/共77页第十二页,共77页。连接(linji)数据库右键点击“数据连接”,选择“添加连接”或“创建新 SQL SERVER 数据库”可以在此选择数据库服务器、验证(ynzhng)方式、数据库等。可点击“测试连接”可点击“更改”选择数据库访问模式第12页/共77页第十三页,共77页。前图中点击(din j)“更改”按钮第13页/共77页第十四页,共77页。完成(wn chng)后的情况连接成功,则会出现选择的数据库及其中的数据表等。可以在此进行添加(tin ji)、修改等对数据库的各种操作第14页/共77页第十五页,共77页。新建数据库如果不是使用现有数据库,也可以新建立(jinl)自己的数据库右键单击“数据连接”,选择“创建新的 SQL Server 数据库”命令,弹出新建窗口第15页/共77页第十六页,共77页。点“确定”后就建立了一个空数据库在“服务器资源管理器”的“数据连接”项下出现该数据库右键单击“表”,选择“添加新表”命令,然后(rnhu)进行表中列的添加,包括列名、数据类型等 单击“保存”按钮,保存名为Class1的表第16页/共77页第十七页,共77页。在“表”列表中,出现Class1表。右键单击Class1,选择“显示表数据”(也许是“检索数据”)命令,然后可以进行记录的添加(tin ji)信息添加(tin ji)完后,在窗口边缘空白部分右键选择“执行SQL”,即可将数据添加(tin ji)到表中第17页/共77页第十八页,共77页。为项目(xingm)添加数据源建立好连接后,可为项目添加数据源数据源为项目获取数据的来源。作用是将数据和数据显示控件绑定到一起,便于显示或编辑(binj)数据。在“数据”菜单中选择“添加新数据源”,按向导步骤进行,选择希望显示的表、字段等。可以添加多个数据源第18页/共77页第十九页,共77页。添加(tin ji)数据源之后的情况第19页/共77页第二十页,共77页。显示数据(shj)并运行在数据源窗口,将需在界面中显示(xinsh)的数据及其使用的控件,拖放到窗体界面中即可第20页/共77页第二十一页,共77页。4.使用(shyng)OleDb 数据库访问使用“半自动”的方式,主要过程:选择数据源:选为“Microsoft Access 数据库文件”,则采用 OleDb 方式。建立(jinl)连接:OleDbConnection(可以用对象浏览器看看 OleDbConnection 类的属性和方法)获得数据:OleDbDataAdapter返回查询结果:DataSet绑定到数据控件:DataGrid第21页/共77页第二十二页,共77页。建立(jinl)与现有数据库的连接右键单击“数据(shj)连接”,选择“添加连接”命令,弹出窗口,选择数据(shj)库类型。第22页/共77页第二十三页,共77页。点“继续”,出现添加连接窗口“浏览”按钮找到数据库文件“高级”按钮可以打开具体连接属性(shxng)的窗口,一般不用。“测试连接”可以先看看连接上没有“确定”,完成添加连接第23页/共77页第二十四页,共77页。此时“服务器资源管理器”中出现了我们连接的数据库及其相关内容我们可以通过(tnggu)此连接,开发访问该数据库的程序第24页/共77页第二十五页,共77页。使用(shyng)OleDbDataAdapter访问数据库如果希望自己来通过 应用程序操作数据库,需要先在工具箱中添加 OleDbDataAdapter 等相关组件如果是使用(shyng)SQL Server 数据库,应该用 SqlDataAdapter第25页/共77页第二十六页,共77页。添加(tin ji)OleDbDataAdapter打开“工具箱”右键单击“数据”选择“选择项”出现“选择工具箱”窗口添加(tin ji)OleDbDataReader 组件可同时选择需要添加(tin ji)的其它组件第26页/共77页第二十七页,共77页。第27页/共77页第二十八页,共77页。向 Form 中加入(jir)OleDbDataAdapter增加组件后的工具箱如右图将 OleDbDataAdapter 拖到窗口(chungku)中结果显示在下面第28页/共77页第二十九页,共77页。自动出现(chxin)配置向导第29页/共77页第三十页,共77页。点“下一步”后,由于数据库不在当前项目中,会询问是否复制到项目中。出现(chxin)命令类型窗口,继续下一步第30页/共77页第三十一页,共77页。出现“生成SQL语句”窗口点“查询生成器”“高级(goj)选项”按钮可以选择使用哪些语句类型第31页/共77页第三十二页,共77页。先选择(xunz)具体的表,点“添加”也可以选择(xunz)多个表,选好后点“关闭”第32页/共77页第三十三页,共77页。选择要显示的字段,会自动生成查询语句点“执行(zhxng)查询”可以看到结果第33页/共77页第三十四页,共77页。如果点如果点“高级选项高级选项”会弹出选择窗口会弹出选择窗口可以根据需要的数据库操作进行选择可以根据需要的数据库操作进行选择完成完成 SQL SQL 语句配置后继续下一步语句配置后继续下一步(y b)(y b)会出现会出现结果窗口,也可直接点结果窗口,也可直接点“完成完成”。第34页/共77页第三十五页,共77页。完成后会自动添加 oleDbConnection 组件(z jin)下一步需要将当前数据适配器关联到Dataset 对象右键单击“oleDbDataAdapter1”,选择“生成数据集”,出现配置窗口第35页/共77页第三十六页,共77页。此处有两个选择:“现有”为已经配置好的“新建”是建立一个新的 DataSet确定(qudng)后会自动加入一个 DataSet第36页/共77页第三十七页,共77页。到了这一步,已经可以(ky)将对数据库的查询结果关联到 DataSet 了我们知道,DataSet 是内存中的一个虚拟数据库,严格说是一个数据集后面的工作是要将记录在具体的数据绑定控件中显示出来最常用的数据显示控件是 DataGridView其实象文本框、标签、选择框之类的都可以(ky)绑定到 DataSet第37页/共77页第三十八页,共77页。绑定到 DataGridView向窗体中添加一个(y)DataGridView 控件,会出现设置窗口如果没有出现窗口,可在 DataSource 属性进行设置先选择数据源第38页/共77页第三十九页,共77页。展开数据源,选一个即可这里选的是“项目数据源”,选择后会增加一个“公司BindingSource”项如果选“Form1列表(li bio)实例”则无,需要再设置列第39页/共77页第四十页,共77页。文本框的绑定文本框只能(zh nn)显示 DataSet 中当前记录的某一字段(列)的值通过选择属性(DataBindings)中的Text,选择其中的某一列进行绑定 这里选了“公司名称”第40页/共77页第四十一页,共77页。填充(tinchng)数据集最后一步工作,就是让数据最后一步工作,就是让数据(shj)(shj)适配器填充数适配器填充数据据(shj)(shj)集对象集对象 dataSet dataSet为当前窗体的为当前窗体的 Load Load 事件添加如下代码:事件添加如下代码:this.oleDbDataAdapter1.Fill(this.dataSet11,0,0,this.oleDbDataAdapter1.Fill(this.dataSet11,0,0,“公司公司););Fill()Fill()方法用于填充数据方法用于填充数据(shj)(shj)集对象集对象参数参数1 1:要填充的数据:要填充的数据(shj)(shj)集;集;参数参数2 2:从表中第几个记录开始,:从表中第几个记录开始,0 0为第一个;为第一个;参数参数3 3:返回多少条记录,:返回多少条记录,0 0 表示全部;表示全部;参数参数4 4:数据:数据(shj)(shj)来源的表的名称。来源的表的名称。第41页/共77页第四十二页,共77页。运行(ynxng)结果第42页/共77页第四十三页,共77页。看看一些(yxi)关键语句需要引用(ynyng)using System.Data;我们添加了代码:oleDbDataAdapter1.Fill(dataSet1,0,0,公司);另外系统自动写了很多代码第43页/共77页第四十四页,共77页。5.访问(fngwn)SQL Server 数据库使用 SQL Server 数据库时,应使用针对(zhndu)SQL Server 数据库优化了的一组组件这里我们全部通过自己写代码的方式,完成下列工作:(例题 UseSql)建立连接:SqlConnection获得数据:SqlDataAdapter返回查询结果:DataSet绑定到数据控件:DataGridView第44页/共77页第四十五页,共77页。访问(fngwn)SQL 数据库要使用优化的 SQL SERVER 对象访问数据库,需要引入以下(yxi)名字空间:using System.Data;using System.Data.SqlClient;第45页/共77页第四十六页,共77页。SqlConnection 对象(duxing)ADO.NETADO.NET使用使用(shyng)SqlConnection(shyng)SqlConnection 对象与对象与 SQL Server SQL Server 进行连接。进行连接。连接字符串的常用形式有两种:连接字符串的常用形式有两种:(1 1)使用)使用(shyng)Windows(shyng)Windows 集成安全身份验证,集成安全身份验证,例如:例如:string connStr=Integrated Security=SSPI;string connStr=Integrated Security=SSPI;Database=MyDatabase.mdf;Server=localhost;Database=MyDatabase.mdf;Server=localhost;(2 2)使用)使用(shyng)(shyng)用户名、密码形式,例如:用户名、密码形式,例如:string connStr=Data Source=SDXG;Initial string connStr=Data Source=SDXG;Initial Catalog=park;User ID=sa;Password=saas;Catalog=park;User ID=sa;Password=saas;第46页/共77页第四十七页,共77页。通过代码(di m)创建 SqlConnection 对象SqlConnection conn=new SqlConnection(connString);或者(huzh):SqlConnection conn=new SqlConnection();conn.ConnectionString=connString;打开连接:conn.Open();注意,使用完后要及时关闭连接:conn.Close();第47页/共77页第四十八页,共77页。SqlDataAdapter 对象(duxing)SqlDataAdapter 通过无连接的方式完成数据库和本地 DataSet 之间的交互。通过查询语句和 SqlConnection 对象(duxing),生成 SqlDataAdapter 实例访问数据库并获得数据。例如:string strsql=select*from users;da=new SqlDataAdapter(strsql,conn);第48页/共77页第四十九页,共77页。SqlDataAdapter 对象还可以通过SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性为后台(huti)数据库提供对应的操作命令,并传递需要的参数。第49页/共77页第五十页,共77页。DataSet 对象(duxing)使用 DataSet 对象可以完成各种(zhn)数据操作创建 DataSet 后,使用 SqlDataAdapter 对象把数据导入到 DataSet 中。通过 Fill 方法将数据填充到 DataSet 中的某个表中。例如:da.Fill(ds,“newUser”);这里的表名可以随便起第50页/共77页第五十一页,共77页。数据(shj)绑定数据绑定是指在程序运行时,窗体上的控件自动将其属性和数据源关联在一起。Windows 窗体提供了两种类型的数据绑定:简单数据绑定和复杂数据绑定。简单数据绑定:将控件的某个属性绑定到单个值,一般将这些控件绑定到数据库中某个记录的一个字段。复杂数据绑定:将一个控件绑定到多个(du)值,例如 DataGridView控件、ListBox控件等。第51页/共77页第五十二页,共77页。实现(shxin)数据绑定的方式有3种实现方法:在设计界面下通过(tnggu)鼠标拖放实现常用属性的数据绑定;在设计界面下设置控件的 DataBindings 属性,然后利用可视化界面实现各种属性的数据绑定;直接编写代码实现数据绑定。第52页/共77页第五十三页,共77页。直接编写(binxi)代码实现数据绑定不论采用哪种方式,从本质上来讲,都是利用 BindingSource 组件实现数据绑定的。用法(yn f):(1)将 BindingSource 组件绑定到实际数据源(2)将控件绑定的数据源设置为 BindingSource例如:BindingSource bs=new BindingSource();bs.DataSource=ds.TablesnewUser;dataGridView1.DataSource=bs;第53页/共77页第五十四页,共77页。6.DataSet 数据(shj)绑定及编辑DataSet 类是 ADO.NET 中功能非常强大的一个类DataSet 可以脱离数据库而存在(cnzi),DataSet 中的数据即可以是来自数据库(由DataAdapter 填充),也可以来自别的数据源,甚至可以是自己创建数据源 第54页/共77页第五十五页,共77页。DataSet 工作(gngzu)原理实际上 DataSet 可以看作是一个内存中的关系型数据库一个关系型数据库包括表、列、行、约束等,DataSet 的体系结构正是如此DataSet 类相当于一个“容器”,内含表的集合(jh),表又内含列、行、约束的集合(jh)这些类的关系不是继承关系,而是组成关系 第55页/共77页第五十六页,共77页。这些(zhxi)类之间的关系下表只列出了一部分类和集合(jh)DataSet类类 数据集数据集 Tables 集合集合 DataTable类类 数据表数据表 Columns 集合集合 Column类类 数据表的列数据表的列 Rows 集合集合 Row类类 数据表的行数据表的行 Constraints集合集合 Constraint 定义数据约束定义数据约束 第56页/共77页第五十七页,共77页。数据(shj)更新DataAdapter 可以根据结果集的数据结构,自动创建出与之匹配的 dataSet、dataTable、column、row、constraint 对象,并把数据填到这些对象中 DataSet 实例中包含的数据发生更改后,此时调用 DataAdapter.Update 方法,DataAdapter 将分析(fnx)已作出的更改并执行相应的命令(INSERT、UPDATE 或 DELETE),并以此命令来更新数据库中的数据 第57页/共77页第五十八页,共77页。主要(zhyo)的代码/更新数据库sqlDataAdapter1.Update(dataSet1.TablesAuthors);/确认(qurn)数据集的变化dataSet1.TablesAuthors.AcceptChanges();为例题 UseSql 添加一个按钮,并补充更新按钮,当用户在 DataGridView 中修改记录信息后,将改的更新到数据库。第58页/共77页第五十九页,共77页。7.DataGridView 控件当我们需要在界面中显示多条记录时,DataGridView 是最常使用的一个(y)控件。DataGridView 是一个(y)非常复杂的控件,使用好并不容易。数据的填充:可以直接绑定数据源从 DataSet 中获取可以通过编写代码手工填充数据第59页/共77页第六十页,共77页。DataGridView 的属性(shxng)实际上我们开发的软件一般不允许用户在 DataGridView 中随便乱操作。通常 DataGridView 只是(zhsh)用来显示数据DataGridView 有一些 AllowUserTo的属性,决定允许用户做哪些操作第60页/共77页第六十一页,共77页。禁止(jnzh)编辑 DataGridView不给用户提供 Updata 功能,也可通过属性设置禁止编辑:readonly=trueDataGridView 的前身是 DataGrid 控件,新版的有一些变化,包括属性,看比较旧的书注意(zh y)此问题。一些常用属性的使用,我们结合问题逐步介绍。第61页/共77页第六十二页,共77页。绑定数据(shj)时的默认设置绑定了数据源,会自动为数据源中的每个字段单绑定了数据源,会自动为数据源中的每个字段单独创建一列。独创建一列。自动使用字段名称作为列标题。自动使用字段名称作为列标题。支持自动排序支持自动排序(pi x)(pi x)。在列标题中单击或双击,。在列标题中单击或双击,该字段中的值就会按升序或降序排序该字段中的值就会按升序或降序排序(pi x)(pi x)。支持自动调整列宽。在标题之间的列分隔符上双支持自动调整列宽。在标题之间的列分隔符上双击,该分隔符左边的列就会自动按照单元格的内击,该分隔符左边的列就会自动按照单元格的内容展开或收缩。容展开或收缩。第62页/共77页第六十三页,共77页。标题(biot)及行列控制DataGridView 提供了两个重要的集合Columns 和 Rows,用于处理整个(zhngg)数据集。Columns:是表格中的所有列(字段)的集合,为 DataGridViewColumn 对象的集合。Rows:是表格中的所有行(记录)的集合,是 DataGridViewRow 对象的集合。每个 DataGridViewRow 对象又都包含一组DataGridViewCell 对象。可以按使用数组的方式定位到集合的元素第63页/共77页第六十四页,共77页。DataGridViewColumn column=dataGridView1.Columns学号;if(column.HeaderText!=column.DataPropertyName)/让标题(biot)与绑定的字段名称相同 column.HeaderText=column.DataPropertyName;else column.HeaderText=Student ID;第64页/共77页第六十五页,共77页。了解(lioji)Command 对象 我们对数据库的操作都是通过我们对数据库的操作都是通过 Command Command 对象的对象的 SQL SQL 字串进行的:字串进行的:/设置设置SqlCommand SqlCommand 对象对象SqlCommand SqlCommand1=SqlCommand SqlCommand1=new System.Data.new System.Data.SqlClient.SqlCommand();SqlClient.SqlCommand();/执行的操作执行的操作SqlCommand1.CommandText=SqlCommand1.CommandText=SELECT*FROM Authors;SELECT*FROM Authors;创建连接创建连接SqlCommand1.Connection=conn;SqlCommand1.Connection=conn;执行命令,但不返回执行命令,但不返回(fnhu)(fnhu)执行的表数据,只执行的表数据,只是操作行数是操作行数 SqlCommand1.ExecuteNonQuery();SqlCommand1.ExecuteNonQuery();第65页/共77页第六十六页,共77页。SqlCommand 对象(duxing)主要的数据库操作方法ExecuteNonQuery 方法:该方法执行 SQL 语句的结果,但不返回命令执行的表数据,仅返回操作所影响的行数。ExecuteReader 方法:返回一个 SqlDataReader 对象。ExecuteScaler()方法:该方法用于执行 SELECT 查询(chxn),返回结果为一个值的情况,比如用 sum 函数求和等。第66页/共77页第六十七页,共77页。6.访问(fngwn)SQL Server 数据库的视图我们将视图看作是驻留在数据库上的一个或多个SQL语句构成的“虚拟数据表”将它当一般的表来操作就可以 访问视图的方法:通过“服务器资源管理器”先建立一个视图“MyView”然后(rnhu)用与访问数据表类似的方法访问该视图,差别只是将原来连接字符串中的表名改为视图名第67页/共77页第六十八页,共77页。不满足(mnz)于只读,我还想多做点添加和修改记录前提:在适配器配置向导的“高级选项”中没有去掉 Insert、Updata 等选择。原理:控件中显示的是 dataSet 中的内容,而 dataSet 与 Adapter 关联,Adapter 又连接着实际的数据库操作:当对控件中的数据进行了改变(gibin),相应的 dataSet 等于也进行了更新,因此只要对 Adapter 提交更新(Updata)即可。第68页/共77页第六十九页,共77页。实战(shzhn)在 窗体中添加一个按钮在按钮的 click 方法中添加下列语句:this.oleDbDataAdapter1.Update (this.dataSet11);运行程序,修改(xigi)一个值,然后点击该按钮第69页/共77页第七十页,共77页。修改(xigi)前点击“Updata”后关闭程序,再次运行(ynxng)查看对应记录,会看到已经是更新后的结果了第70页/共77页第七十一页,共77页。添加(tin ji)新纪录将记录移动到最后一行填写新的记录注意(zh y)这个例子中“客户ID”是和客户表关联的,不能乱改也不能随便填,必须是现有的。完成后单击按钮第71页/共77页第七十二页,共77页。删除(shnch)记录DataGridView DataGridView 的行与列不支持手动删除操作,必的行与列不支持手动删除操作,必须要使用代码来实现。须要使用代码来实现。在当前窗体的构造函数中添加如下代码。在当前窗体的构造函数中添加如下代码。this.dataGridView1.AllowUserToDeleteRows=this.dataGridView1.AllowUserToDeleteRows=true;true;该属性该属性(shxng)(shxng)表示表示DataGridViewDataGridView允许用允许用户删除行。户删除行。添加添加“删除删除”按钮,按钮,click click 方法添加如下代码:方法添加如下代码:foreach(DataGridViewRow r in dataGridView1 foreach(DataGridViewRow r in dataGridView1.SelectedRows).SelectedRows)dataGridView1.Rows.Remove(r);dataGridView1.Rows.Remove(r);r r 表示选中的行,通过表示选中的行,通过Remove()Remove()方法将该行删除。方法将该行删除。第72页/共77页第七十三页,共77页。运行程序选中 dataGridView1 中的任意一行单击“删除”按钮注意,此时只是在 dataSet 中删除了,原始数据库没有变还应该单击“更新设置(shzh)”按钮,将刚才的删除操作的结果提交到数据库。不演示图片了,大家自己应该会做了第73页/共77页第七十四页,共77页。练习(linx)在 Books.mdb 数据库添加一个新表在 DataGrid 中显示该表单击一 button 后,用 dataSet 对象和 DataAdapter 对象自动更新该表中的值/循环(xnhun)更改Authors表firstName字段的值foreach(DataRow row in dataSet1.TablesAuthors.Rows)rowfirstName=aa;第74页/共77页第七十五页,共77页。小结(xioji)本章对 ADO.NET 数据库编程的主要方面几乎都涉及到了由于课时关系不能详细介绍,只能给你们提供信息和基本的方法书中还有很多内容我们这里没有涉及对编程具体问题要靠自已(z y)去研究 第75页/共77页第七十六页,共77页。作业(zuy)完成(wn chng)选课程序在资源管理器中建立数据库建立相应的表并输入一些记录建立数据库连接完成(wn chng)代码编写并调试提交实验报告(包括系统设计、必要的设计图、关键技术说明、代码及界面图等)到服务器(11.28截止)报告文件名格式“学号-姓名.DOC”第76页/共77页第七十七页,共77页。