第八章用DataGridView显示和操作数据库回顾//command是一个有效的Command对象SqlDataReaderdataReader=command.ExecuteReader();if(dataReader.HasRows){studentName=dataReader[0];}dataReader.Close();缺少dataReader.Read();没有类型转换(string)dataReader[0];预习检查DataSet对象的作用是什么?DataAdapter对象的作用是什么?DataGridView控件的作用是什么?本章目标了解数据集(DataSet)的结构会使用数据适配器填充数据集会使用数据适配器将数据集的修改提交到数据库掌握DataGridView控件的使用为什么使用DataSet对象应用程序大量的数据来自多个数据源大批量的查询、修改数据怎么办?想在断开数据库连接的情况下操所数据怎么办?使用DataSet对象DataSet数据库什么是DataSet对象DataSet数据集简单理解为一个临时数据库将数据源的数据保存在内存中独立于任何数据库工厂的仓库车间的临时仓库生产线数据源DataSet应用程序驻留于内存,临时存储数据类似的关系DataSet的结构2-1DataSet的基本结构DataSetDataTableDataColumnCollectionDataRowCollectionDataColumnDataRowDataTableCollection数据集数据表的集合数据表数据列的集合数据行的集合数据列数据行DataSet的结构2-2GradeTableClassTableStudentTableidnameclasssex1小菲5女2小薇3女3小强6男DataTableCollection数据表集合DataTable数据表DataRowCollection数据行集合DataRow数据行DataColumnCollection数据列集合DataColumn数据列数据集的工作原理数据集发送数据修改数据集传递数据提交修改后的数据请求数据客户端如何创建DataSet对象创建一个DataSet可以指定一个数据集的名称如果不指定名称,则默认被设为NewDataSetDataSetdataSet=newDataSet();DataSetdataSet=newDataSet(MySchool);DataSet数据集对象=newDataSet(数据集的名称字符串);可选的为什么使用DataAdapter如何将数据库的数据放在DataSet中?DataSet数据集数据库DataSet数据集Connection数据库连接DataAdapter数据适配器数据库DataAdapter对象不同命名空间的DataAdapter对象命名空间对应的DataAdapter对象System.Data.SqlClientSqlDataAdapterSystem.Data.OleDbOleDbDataAdapterSystem.Data.OdbcOdbcDataAdapterSystem.Data.OracleClientOracleDataAdapter如何填充数据集使用DataAdapter对象填充数据集DataSet数据集使用Fill()方法填充DataSet中的表使用Connection连接数据源Connection数据库DataAdapter的Fill()方法填充数据集演示示例1:查看教师信息窗体——填充数据集,打印部分内容SqlDataAdapter对象名=newSqlDataAdapter(查询用sql语句,数据库连接);创建SqlDataAdapter对象1DataAdapter对象.Fill(数据集对象,数据表名称字符串);填充DataSet2如何保存DataSet中的数据把数据集中修改过的数据提交到数据源DataSet数据集数据库dataAdapter.Update(dataSet,Teacher);DataAdapter的Update()方法调用前,要先设置更新需要的相关命令可以使用SqlCommandBuilder对象ConnectionSqlCommandBuilder对象利用SqlCommandBuilder对象能够自动生成:INSERT命令UPDATE命令DELETE命令SqlCommandBuilderbuilder=newSqlCommandBuilder(已创建的DataAdapter对象);保存DataSet中的数据自动生成用于更新的相关命令1将DataSet的数据提交到数据源2SqlCommandBuilderbuilder=newSqlCommandBuilder(dataAdapter);dataAdapter.Update(dataSet,Teacher);步骤:SqlCommandBuilderbuilder=newSqlCommandBuilder(已创建的DataAdapter对象);DataAdapter对象.Update(数据集对象,数据表名称字符串);DataAdapter对象小结DataAdapter的主要属性和方法属性说明SelectCommand从数据库检索数据的Command对象方法说明Fill向DataSet中的表填充数据Update将DataSet中的数据提交到数据库小结使用什么方法填充DataSet?DataAdapter的作用是什么?使用什么方法将DataSet中数据提交到数据库?为什么使用DataGridView怎样显示DataSet中的数据呢?数据集使用DataGridViewDataGridView控件DataGridView控件强大而灵活地显示数据轻松定义控件外观像Excel表格一样方便一行代码实现数据绑定可视化操作使用DataGridView显示数据示例1已经填充了DataSet,如何在窗体中显示教师信息?使用DataGridView显示数据指定DataGridView的数据源——DataSource属性使用DataGridView显示数据实现步骤:添加窗体的控件设置DataGridView控件和其中各列的属性设置DataSource属性,指定数据源dgvTeacher.DataSource=dataSet.Tables[Teacher];演示示例2:使用DataGridView显示数据DataGridView控件重要属性DataGridView的重要属性属性说明Columns包含的列的集合DataSourceDataGridView的数据源ReadOnly是否可以编辑单元格在其中编辑DataGridView列的属性列的主要属性小结DataGridView中各列的主要属性属性说明DataPropertyName绑定的数据列的名称HeaderText列标题文本Visible指定列是否可见Frozen指定水平滚动DataGridView时列是否移动ReadOnly指定单元格是否为只读通过DataGridView修改数据把修改过的教师信息保存到数据库使用DataAdapter的Update()方法注意:将DataGridView和相应列的ReadOnly属性设为False通过DataGridView修改数据实现步骤:处理“保存修改”按钮的Click事件编写事件处理程序SqlCommandBuilderbuilder=newSqlCommandBuilder(dataAdapter);dataAdapter.Update(dataSet,Teacher);演示示例3:通过DataGridView修改数据小结使用DataGridView的什么属性指定数据源?在示例3中增加“刷新”按钮,实现刷新功能//当点击“刷新”按钮时,重新填充数据集privatevoidbtnReFill_Click(objectsender,EventArgse){dataSet.Tables[Teacher].Clear();//清空原来的数据dataAdapter.Fill(dataSet,Teacher);//填充数据集}查看源代码ADO.NET小结数据库.NET数据提供程序Connection对象Command对象DataReader对象DataAdapter对象内存DataSetExecuteReader()Read()Fill()Update()ExecuteScalar()ExecuteNonQuery()应用程序总结ADO.NET的两大组成部分是什么?每个核心对象的作用是什么?.NET数据提供程序包括哪几个核心对象?