1、安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组项目运行界面 安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组项目目标 l 理解数据绑定l掌握使用DataSet对象的使用方法l 掌握BindingSource对象的使用方法l 掌握DataAdapter对象的使用方法l 掌握DataGridView控件的使用方法会在与数据库服务器断开连接的状态下进行数据访问知识目标知识目标1能力目标能力目标2安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组工作任务 任务任务1 1数据管理与数据管理与绑定绑
2、定管理数据库中管理数据库中的数据的数据任务任务2 2安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组任务一任务一 数据管理与绑定数据管理与绑定安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组一、DataSet对象 DataSetDataSet(数据集)是数据驻留在内存中的表示形(数据集)是数据驻留在内存中的表示形式,可以将其理解为内存中的数据库。不管数据源是式,可以将其理解为内存中的数据库。不管数据源是什么,它都会提供一致的关系编程模型什么,它都会提供一致的关系编程模型。(1 1)DataSetDataSet类的常用构造函
3、数类的常用构造函数DataSetDataSet()():初始化:初始化DataSetDataSet类的新实例。类的新实例。DataSet(stringDataSet(string dataSetNamedataSetName):用给定名称初:用给定名称初始化始化DataSetDataSet类的新实例。类的新实例。安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组一、DataSet对象(2 2)DataSetDataSet类的主要属性类的主要属性TablesTables属性是属性是DataSetDataSet类的主要属性,表示类的主要属性,表示DataSetDa
4、taSet对对象中的数据表(象中的数据表(DataTableDataTable)集合。一般使用)集合。一般使用TablesTables属性属性对对DataSetDataSet对象进行以下操作。对象进行以下操作。访问访问DataSetDataSet对象中的数据表对象中的数据表。添加数据表添加数据表。删除数据表。删除数据表。例如:例如:创建一个数据表,并将其添加到指定创建一个数据表,并将其添加到指定DataSetDataSet对象。对象。DataSet ds=new DataSet(DataBase);DataSet ds=new DataSet(DataBase);DataTable dt=ne
5、w DataTable(Tab1);DataTable dt=new DataTable(Tab1);ds.Tables.Add(dt);ds.Tables.Add(dt);安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组二、DataTable对象 DataTableDataTable(数据表)表示内存中数据的一个表。(数据表)表示内存中数据的一个表。它可以包含在它可以包含在DataSetDataSet对象中,也可以独立存在对象中,也可以独立存在。(1 1)DataTableDataTable类的常用构造函数类的常用构造函数DataTableDataTabl
6、e()():初始化:初始化DataTableDataTable类的新实例。类的新实例。DataTableDataTable(string (string tableNametableName):用指定的表名:用指定的表名初始化初始化DataTableDataTable类的新实例类的新实例安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组二、DataTable对象(2 2)DataTableDataTable类的主要属性类的主要属性ColumnsColumns:表示数据表的列的集合。:表示数据表的列的集合。RowsRows:表示数据表的行的集合。:表示数据表的行
7、的集合。(3 3)DataTableDataTable对象的常用操作对象的常用操作 添加列添加列例如:建立一张数据表,并添加两列。例如:建立一张数据表,并添加两列。DataTableDataTable dtdt=new =new DataTable(UserDataTable(User););dt.Columns.Add(UserNamedt.Columns.Add(UserName,typeof(stringtypeof(string););dt.Columns.Add(Agedt.Columns.Add(Age,typeof(inttypeof(int););安徽电子信息职业技术学院安徽电
8、子信息职业技术学院C#C#程序设计程序设计课程组课程组二、DataTable对象添加行添加行例如:在上例的数据表中添加两行。例如:在上例的数据表中添加两行。dt.Rows.Add(admindt.Rows.Add(admin,25);,25);dt.Rows.Add(guestdt.Rows.Add(guest,30);,30);访问数据表中指定行列的数据访问数据表中指定行列的数据例如:访问上例数据表的第例如:访问上例数据表的第2 2行第行第1 1列的数据。列的数据。dt.Rows10;dt.Rows10;或或 dt.Rows1UserName;dt.Rows1UserName;安徽电子信息职
9、业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组三、数据绑定数据绑定是指在数据源和控件之间建立一个同步、双数据绑定是指在数据源和控件之间建立一个同步、双向的联系,以便可以轻松地访问数据。向的联系,以便可以轻松地访问数据。(1 1)将数据源绑定到文本框、标签等只显示单个值的控)将数据源绑定到文本框、标签等只显示单个值的控件。件。格式:格式:控件名控件名.DataBindings.AddDataBindings.Add(属性名称属性名称,数据源数据源,列名列名););例如:假设例如:假设DataSetDataSet对象(对象名为对象(对象名为dsds)中有一张数据表,)中有一
10、张数据表,表中共有三列,列名分别为表中共有三列,列名分别为C1C1、C2C2、C3C3。textBox1.DataBindings.Add(Text,ds.Tables0,textBox1.DataBindings.Add(Text,ds.Tables0,C3);C3);安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组三、数据绑定(2 2)将数据源绑定到列表框、组合框等显示多个值的控)将数据源绑定到列表框、组合框等显示多个值的控件。件。格式:格式:控件名控件名.DataSourceDataSource=数据源数据源;控件名控件名.DisplayMemberD
11、isplayMember=列名列名;例如:将上例数据表的第三列绑定到列表框控件例如:将上例数据表的第三列绑定到列表框控件listBox1listBox1。listBox1.DataSource=ds.Tables0;listBox1.DataSource=ds.Tables0;listBox1.DisplayMember=C3;listBox1.DisplayMember=C3;安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组三、数据绑定(3 3)将数据源绑定到)将数据源绑定到DataGridViewDataGridView(数据表格视图)控(数据表格视图)
12、控件。件。DataGridViewDataGridView控件提供了一种强大而灵活的以表格形控件提供了一种强大而灵活的以表格形式显示和编辑数据的方式(在任务二中详细介绍)。将数式显示和编辑数据的方式(在任务二中详细介绍)。将数据源绑定到该控件的格式如下:据源绑定到该控件的格式如下:控件名控件名.DataSourceDataSource=数据源数据源;例 如:将 上 例 数 据 表 绑 定 到 数 据 表 格 视 图 控 件例 如:将 上 例 数 据 表 绑 定 到 数 据 表 格 视 图 控 件dataGridView1dataGridView1。dataGridView1.DataSourc
13、e=ds.Tables0;dataGridView1.DataSource=ds.Tables0;安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组四、BindingSource对象 BindingSourceBindingSource对象用于封装窗体的数据源,它简化对象用于封装窗体的数据源,它简化了窗体中的控件到数据的绑定。了窗体中的控件到数据的绑定。BindingSourceBindingSource对象的使对象的使用步骤如下。用步骤如下。(1 1)创建)创建BindingSourceBindingSource对象对象使 用 无 参 构 造 函 数使 用
14、无 参 构 造 函 数 B i n d i n g S o u r c eB i n d i n g S o u r c e()()创 建创 建BindingSourceBindingSource对象。对象。(2 2)使用)使用DataSourceDataSource属性将数据源绑定到属性将数据源绑定到BindingSourceBindingSource对象。对象。(3 3)将)将BindingSourceBindingSource对象作为数据源绑定到控件。对象作为数据源绑定到控件。安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组四、BindingSourc
15、e对象 例如:使用例如:使用BindingSourceBindingSource对象,将前面例子中数据表的对象,将前面例子中数据表的第三列绑定到列表框控件第三列绑定到列表框控件listBox1listBox1。BindingSourceBindingSource bsbs=new=new BindingSourceBindingSource();();bs.DataSourcebs.DataSource=ds.Tables0;=ds.Tables0;listBox1.DataSource=listBox1.DataSource=bsbs;listBox1.DisplayMember=C3;li
16、stBox1.DisplayMember=C3;安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组四、BindingSource对象 (4 4)使用)使用BindingSourceBindingSource对象对数据进行定位、筛选、排对象对数据进行定位、筛选、排序和更新。序和更新。数据定位数据定位例如:将上例中的当前行移至指定行。例如:将上例中的当前行移至指定行。移至首行:移至首行:bs.MoveFirstbs.MoveFirst();();移至上一行:移至上一行:bsbs.MovePreviousMovePrevious();();移至下一行:移至下一行:b
17、sbs.MoveNextMoveNext();();移至末行:移至末行:bsbs.MoveLastMoveLast();();移至第移至第4 4行:行:bsbs.Position=3;.Position=3;安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组四、BindingSource对象 数据筛选数据筛选可以使用可以使用FilterFilter属性对绑定数据进行筛选。该属性的属性对绑定数据进行筛选。该属性的取值与取值与SQLSQL语句中语句中WHEREWHERE条件的语法一致。条件的语法一致。例如:使用上例中的例如:使用上例中的bsbs对象筛选出对象筛选出
18、C3C3列中含有字母列中含有字母“A”A”的所有信息。的所有信息。bs.Filterbs.Filter=C3 like%A%;=C3 like%A%;数据排序数据排序可以使用可以使用SortSort属性对绑定数据进行排序。该属性的取属性对绑定数据进行排序。该属性的取值与值与SQLSQL语句中语句中ORDER BYORDER BY的语法一致。的语法一致。例如:使用上例中的例如:使用上例中的bsbs对象将对象将C3C3列降序排列。列降序排列。bs.Sortbs.Sort=C3 =C3 descdesc;安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组任务二任务二
19、 管理数据库中的数据管理数据库中的数据安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组一、DataAdapter对象DataAdapterDataAdapter对象是对象是DataSetDataSet和数据源之间的桥接和数据源之间的桥接器,用 于 检 索 和 保 存 数 据。对 于 不 同 的器,用 于 检 索 和 保 存 数 据。对 于 不 同 的.N E T.N E T FrameworkFramework数据提供程序,提供了不同的数据提供程序,提供了不同的DataAdapterDataAdapter对象。访问对象。访问SQLSQL ServerServ
20、er数据库时,一般使用数据库时,一般使用SQLSQL Server.NET Framework Server.NET Framework 数据提供程序中的数据提供程序中的SqlDataAdapterSqlDataAdapter对象对象。安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组一、DataAdapter对象(1 1)SqlDataAdapterSqlDataAdapter类的构造函数类的构造函数SqlDataAdapter()SqlDataAdapter():初始化:初始化SqlDataAdapterSqlDataAdapter类的新实类的新实例例。S
21、qlDataAdapter(SqlCommandSqlDataAdapter(SqlCommand selectCommand)selectCommand):初始:初始化化SqlDataAdapterSqlDataAdapter 类的新实例,用指定的类的新实例,用指定的selectCommandselectCommand作为作为 SelectCommandSelectCommand 的属性的属性。SqlDataAdapter(stringSqlDataAdapter(string selectCommandTextselectCommandText,SqlConnectionSqlConnec
22、tion selectConnection)selectConnection):使用命令文本:使用命令文本和连接对象初始化和连接对象初始化SqlDataAdapterSqlDataAdapter类的一个新实例类的一个新实例。SqlDataAdapter(stringSqlDataAdapter(string selectCommandTextselectCommandText,string string selectConnectionString)selectConnectionString):用命令文本和连接字:用命令文本和连接字符串初始化符串初始化SqlDataAdapterSqlDat
23、aAdapter类的一个新实例类的一个新实例。安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组一、DataAdapter对象(2 2)SqlDataAdapterSqlDataAdapter类的主要属性类的主要属性S q l D a t a A d a p t e rS q l D a t a A d a p t e r 类 的 主 要 属 性 有类 的 主 要 属 性 有S e l e c t C o m m a n dS e l e c t C o m m a n d、I n s e r t C o m m a n dI n s e r t C o m
24、m a n d、UpdateCommandUpdateCommand和和DeleteCommandDeleteCommand。它们都是。它们都是SqlCommandSqlCommand对象,分别用于获取或设置访问数据对象,分别用于获取或设置访问数据库的查询命令、插入命令、修改命令和删除命令。库的查询命令、插入命令、修改命令和删除命令。其中其中SelectCommandSelectCommand属性是属性是SqlDataAdapterSqlDataAdapter对象对象进行数据访问的基础,必须在访问数据前设置;进行数据访问的基础,必须在访问数据前设置;其它三个属性可以使用其它三个属性可以使用Sq
25、lCommandBuilderSqlCommandBuilder(命令(命令生成器)对象根据生成器)对象根据SelectCommandSelectCommand属性自动生成。属性自动生成。安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组一、DataAdapter对象(3 3)SqlDataAdapterSqlDataAdapter类的常用方法类的常用方法intint Fill(DataSetFill(DataSet dataSetdataSet,string string srcTable)srcTable)或或intint Fill(DataTableFi
26、ll(DataTable dataTable)dataTable):检索数据并填:检索数据并填充到指定数据表中。参数充到指定数据表中。参数srcTablesrcTable表示填充到表示填充到DataSetDataSet对象的数据表的名称,该名称可以任意取。对象的数据表的名称,该名称可以任意取。返回值为填充的行数返回值为填充的行数。intint Update(DataSetUpdate(DataSet dataSet,stringdataSet,string srcTable)srcTable)或或intint Update(DataTableUpdate(DataTable dataTable
27、)dataTable):将指定数据:将指定数据表中更改的数据更新到数据库中。参数表中更改的数据更新到数据库中。参数srcTablesrcTable表示表示要更新数据的数据表的名称。返回值为更新的行数要更新数据的数据表的名称。返回值为更新的行数。安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组一、DataAdapter对象例如:创建一个例如:创建一个SqlDataAdapterSqlDataAdapter对象,用于访问对象,用于访问T_StudentT_Student表中的所有信息,并填充到指定的表中的所有信息,并填充到指定的DataSetDataSet对象对
28、象中。中。string string connectionStringconnectionString=Server=(=Server=(local);Integratedlocal);Integrated Security=Security=SSPI;DatabaseSSPI;Database=Student;=Student;string string sqlsql=select =select*from from T_StudentT_Student;S q l C o n n e c t i o nS q l C o n n e c t i o n s q l C n ns q l C
29、 n n =n e w =n e w SqlConnection(connectionStringSqlConnection(connectionString););SqlCommandSqlCommand sqlCmdsqlCmd=new =new SqlCommand(sqlSqlCommand(sql,sqlCnnsqlCnn););SqlDataAdapterSqlDataAdapter sqlDapsqlDap=new =new SqlDataAdapter(sqlCmdSqlDataAdapter(sqlCmd););DataSetDataSet dsds=new=new Data
30、Set(StudentDataSet(Student););sqlDap.Fill(ds,T_StudentsqlDap.Fill(ds,T_Student););安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组二、DataGridView控件 DataGridViewDataGridView(数据表格视图)控件提供了一种强大而灵活的以(数据表格视图)控件提供了一种强大而灵活的以表格形式显示数据的方式,可以使用它显示和编辑多种表格数据。表格形式显示数据的方式,可以使用它显示和编辑多种表格数据。DataGridViewDataGridView控件既可以与数据源
31、一起绑定使用,也可以单独使用。控件既可以与数据源一起绑定使用,也可以单独使用。(1 1)DataGridViewDataGridView控件常用属性控件常用属性ColumnsColumns:获取一个包含控件中所有列(:获取一个包含控件中所有列(DataGridViewColumnDataGridViewColumn)的集合。的集合。CurrentCellCurrentCell:获取或设置当前处于活动状态的单元格:获取或设置当前处于活动状态的单元格(DataGridViewCellDataGridViewCell)。)。CurrentRowCurrentRow:获取包含当前单元格的行(:获取包含
32、当前单元格的行(DataGridViewRowDataGridViewRow)。)。DataSourceDataSource:获取或设置控件所显示数据的数据源。:获取或设置控件所显示数据的数据源。ReadOnlyReadOnly:获取一个值,该值指示用户是否可以编辑:获取一个值,该值指示用户是否可以编辑DataGridViewDataGridView控件的单元格。控件的单元格。RowsRows:获取一个包含控件中所有行的集合。:获取一个包含控件中所有行的集合。安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组二、DataGridView控件 (2 2)Data
33、GridViewDataGridView控件常用操作控件常用操作 获取单元格的信息获取单元格的信息DataGridViewCellDataGridViewCell对象表示对象表示DataGridViewDataGridView控件的单元控件的单元格。格。DataGridViewCellDataGridViewCell对象有三个主要属性:对象有三个主要属性:ValueValue、RowIndexRowIndex和和ColumnIndexColumnIndex,它们分别表示单元格的值、行,它们分别表示单元格的值、行号和列号。号和列号。例如:例如:获取获取dataGridView1dataGridV
34、iew1控件中当前单元格的值、行号控件中当前单元格的值、行号和列号。和列号。DataGridViewCell cell=dataGridView1.CurrentCell;DataGridViewCell cell=dataGridView1.CurrentCell;object vl=cell.Value;object vl=cell.Value;int ri=cell.RowIndex;int ri=cell.RowIndex;int ci=cell.ColumnIndex;int ci=cell.ColumnIndex;安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序
35、设计课程组课程组二、DataGridView控件 访问指定单元格访问指定单元格例如:例如:访问访问dataGridView1dataGridView1控件第控件第4 4行第行第3 3列的单元格。列的单元格。dataGridView12,3;dataGridView12,3;或或 dataGridView1.Rows3.Cells2;dataGridView1.Rows3.Cells2;添加行添加行例如:例如:假设假设dataGridView1dataGridView1控件中共有三列,列名分控件中共有三列,列名分别为别为C1C1、C2C2、C3C3,其中前两列是字符串类型,第三列,其中前两列是字
36、符串类型,第三列是整型,则可以使用以下方法向该控件添加一行数据是整型,则可以使用以下方法向该控件添加一行数据:dataGridView1.Rows.Add(dataGridView1.Rows.Add(李四李四,男男,20);,20);安徽电子信息职业技术学院安徽电子信息职业技术学院C#C#程序设计程序设计课程组课程组二、DataGridView控件 删除行删除行例如:例如:删除删除dataGridView1dataGridView1控件中的当前行。控件中的当前行。dataGridView1.Rows.Remove(dataGridView1.CurrentRow);dataGridView1
37、.Rows.Remove(dataGridView1.CurrentRow);或或 dataGridView1.Rows.RemoveAt(dataGridView1.CurrentCell.dataGridView1.Rows.RemoveAt(dataGridView1.CurrentCell.RowIndex);RowIndex);(3 3)DataGridViewDataGridView控件常用事件控件常用事件CellContentClickCellContentClick:在单元格中的内容被单击时发生。:在单元格中的内容被单击时发生。DataErrorDataError:当外部数据分析或验证操作引发异常时,或者:当外部数据分析或验证操作引发异常时,或者当尝试将数据提交到数据源失败时发生。通过当尝试将数据提交到数据源失败时发生。通过DataErrorDataError事件,事件,可以处理在数据处理操作期间引发的异常。可以处理在数据处理操作期间引发的异常。