数据库应用程序设计1.ppt_第1页
数据库应用程序设计1.ppt_第2页
数据库应用程序设计1.ppt_第3页
数据库应用程序设计1.ppt_第4页
数据库应用程序设计1.ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章 数据库应用程序设计,主要内容,6.1 数据库应用程序的结构与设计步骤 6.2 ADO.NET数据库访问技术 6.3 DataGridView 控件 6.4 BindingSource 组件 6.5 BindingNavigator控件 6.6 数据绑定 6.7 学生档案管理系统设计,6.1 数据库应用程序的结构与设计步骤,6.1.1 数据库应用程序结构 数据库应用程序由数据访问窗体控件、数据源控件和ADO.NET数据访问对象组成。数据访问窗体控件用于设计数据库应用程序界面,ADO.NET数据访问对象访问数据库,实现数据的增、删、改、查,是程序界面与数据库、数据表之间进行连接的桥梁,为数据窗体控件提供数据源。,图6-1 数据库应用程序结构,6.1 数据库应用程序的结构与设计步骤,1数据访问窗体控件 典型数据访问窗体控件有DataGridView和BindingNavigator,此外在第二章中介绍的许多控件如TextBox、Label、CombBox、ListBox等也可以设置数据源关联到数据表的字段,充当数据访问窗体控件。 2数据源控件 数据源控件包括DataSet控件和BindingSource控件,数据源控件是数据界面控件从数据表获取数据的通道。 3ADO.NET对象 ADO.NET对象能够方便地访问数据库和灵活地操作数据库,是目前流行的数据库访问技术。,6.1 数据库应用程序的结构与设计步骤,6.1.2 数据库应用程序的设计步骤 1创建项目 2添加Windows窗体 3设计用户界面 4创建事件处理程序和编译、调试、运行程序,6.2 ADO.NET数据库访问技术,6.2.1 ADO.NET概述,6.2 ADO.NET数据库访问技术,ADO.NET是建立在.NET Framework平台之上的支持数据库应用程序开发的数据访问中间件,由.NET Framework(提供了对.NET应用程序的数据访问和管理功能)中的一组类或命名空间组成。其主要成员为DataSet对象及.NET数据提供程序,.NET数据提供程序包含Connection对象、Command对象、DataReader对象和DataAdapter对象。 通过ADO.NET访问数据库需要引入的命名空间如表6-1所示。 表6-1 ADO.NET命名空间,6.2 ADO.NET数据库访问技术,6.2 ADO.NET数据库访问技术,6.2.2 使用ADO.NET对象访问数据库 以ACCESS数据库的访问为例,数据库访问的一般步骤为: (1)选择数据库; (2)打开数据库; (3)操作相关表; (4)返回操作结果。 1连接数据库 连接数据库包括定位和打开数据库,由Connection对象完成。 OleDbConnection con = new OleDbConnection(connectionString); /创建Access数据库连接对象con SqlConnection con = new SqlConnection(connectionString); /创建SQL Server数据库连接对象con 参数connectionString用来指定数据连接方式,可以省略不写,在创建Connection对象之后再指定ConnectionString属性。,6.2 ADO.NET数据库访问技术,(1)设置connectionString参数 connectionString参数用于获取或设置用来打开数据库的连接字符,连接OLE DB兼容数据库常用的参数如表6-2所示,参数与参数之间以分号(;)隔开。 表6-2 连接OLE DB兼容数据库常用参数,6.2 ADO.NET数据库访问技术,Oracle、Access及SQL Server 6.5或以前版本等常用数据库的connectionString参数设置举例分别如下,其中Data Source参数为数据源的实际路径: “Provider=MSDAORA;Data Source=ORACLE8i7;User ID=Jerry; Password=f658” /Oracle数据库 “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d: studentsys.mdb” /Access数据库 “Provider=SQLOLEDB;Data Source=WWW; Integrated Security=SSPI” /SQL Server 6.5或以前版本数据库,6.2 ADO.NET数据库访问技术,表6-3 连接SQL Server 7.0或更新版本数据库常用参数,6.2 ADO.NET数据库访问技术,(2)使用Connection对象方法 Open()方法:打开数据连接,connectionString属性并没有真正打开数据库,必须藉由Open()方法来打开,打开方式由connectionString属性指定。 Close()方法:关闭数据连接,数据源使用后,务必记得关闭数据连接。 【例6-1】连接 Access数据连接。,6.2 ADO.NET数据库访问技术,2操作数据表 有连接方式下使用Command对象对数据源执行各种操作。 OleDbCommand cmd=new OleDbCommand(cmdText,connection); /创建操作Access数据库的Command对象 SqlCommand cmd=new SqlCommand(cmdText,connection); /创建操作SQL Server 7.0以上版本数据库的Command对象 (1)Command对象的常用属性 CommandText=“”:获取或设置欲对数据源执行的SQL命令、存储过程名称或数据表名称,此属性可以在Command对象声明时设置,当调用ExecuteNonQuery()、ExecuteReader()、ExecuteScalar()、ExecuteXmlReader()中的任一方法时,Command对象会执行CommandText属性所指定的内容。 Connection=:获取或设置Command对象所要使用的数据连接,属性值为Connection对象,6.2 ADO.NET数据库访问技术,(2)Command对象的常用方法 ExecuteNonQuery():执行CommandText属性指定的内容,并返回被影响的行数 。 ExecuteReader():执行CommandText属性指定的内容,并创建DataReader对象 。 ExecuteScalar():执行CommandText属性指定的内容,并返回执行结果第一行第一列的值 。 【例6-2】用Command对象执行SQL语句,插入一条记录到Access数据库中。,6.2 ADO.NET数据库访问技术,3返回操作结果 对数据表操作以后往往需要返回操作的结果,有连接方式下操作结果返回到DataReader对象。DataReader对象只能将数据从头至尾依次读出,不能写入数据。 通过Command对象的ExecuteReader()方法来创建DataReader对象。 OleDbDataReader reader = cmd.ExecuteReader() ; /返回Access数据库数据 SqlDataReader reader = cmd.ExecuteReader(); /返回SQL Server 7.0或更新版本数据库数据 (1)DataReader对象的常用属性 FieldCount:获取字段数目。 IsClosed:获取DataReader对象的状态,True表示关闭,False表示打开。 RecordsAffected:获取执行Insert、Delete或Update等SQL命令后受到影响的行数,若没有行受到影响,则返回0。,6.2 ADO.NET数据库访问技术,(2)DataReader对象的方法 Close():关闭DataReader对象。 GetBoolean(ordinal):获取第ordinal1列的内容,返回值为Boolean类型的数据,其他类似的方法有GetByte(ordinal)等。 GetDataTypeName(ordinal):获取第ordinal1列的来源数据类型名称。 GetFieldType(ordinal):获取第ordinal1列的数据类型。 GetName(ordinal):获取第ordinal1列字段的名称。 GetValue (ordinal):获取第ordinal1列字段的值。 GetValues(values):获取所有字段的内容,并将字段内容存放在values数组。 GetOrdinal(name):获取字段名称为name的字段序号。 IsDBNull(ordinal):判断第ordinal1列是否为Null,返回False表示不是Null,返回True表示是Null。 Reader():读取一条数据并返回布尔值,返回True表示当前记录存在,返回False表示当前记录不存在。 【例6-3】使用OleDbDataReader对象来读取Access数据库的所有数据。,6.2 ADO.NET数据库访问技术,6.2.3 使用DataSet对象访问数据库 DataSet对象是ADO.NET体系结构的中心,位于.NET Framework中的System.Data.DataSet中,实际上是从数据库中检索记录的缓存,可以将DataSet当作一个小型内存数据库,它包含表、列、约束、行和关系。这些DataSet对象称为DataTable、DataColumn、DataRow、Constraint和Reliation。DataSet允许使用无连接的应用程序。,图6-4 DataSet对象处理数据过程,6.2 ADO.NET数据库访问技术,1使用DataAdapter对象操作数据表 与Command对象类似,DataAdapter对象对数据源执行各种SQL命令并返回结果,它建立在Command对象之上,可以执行的SQL命令有“选取”(SelectCommand)、“插入”(InsertCommand)、“更新”(UpdateCommand)及“删除”(DeleteCommand)。 创建OLE DB兼容数据库的DataAdapter对象的语法有以下四种: OleDbDataAdapter adapter=new OleDbDataAdapter(); OleDbDataAdapter adapter =new OleDbDataAdapter(SelectCommand) ; OleDbDataAdapter adapter =new OleDbDataAdapter(SelectCommandText,selectConnection) ; OleDbDataAdapter adapter =new OleDbDataAdapter(SelectCommandText,selectConnectionString) ; 创建SQL Server7.0及以上版本数据库的DataAdapter对象的语法与创建OLE DB兼容数据库DataAdapter对象类似,将上述语法中的OleDb字眼改成Sql即可。,6.2 ADO.NET数据库访问技术,(1)DataAdapter对象的常用属性 DeleteCommand = “”:获取或设置用来从数据源删除数据行的SQL命令,属性值必须为Command对象,此属性只有在调用Update()方法,DataAdapter对象得知须从数据源删除数据行时使用,其主要用途是告诉DataAdapter对象如何从数据源删除数据行 。 InsertCommand = “”:获取或设置将数据行插入数据源的SQL命令,属性值必须是Command对象,使用原则同DeleteCommand。 SelectCommand =“”:获取或设置用来从数据源选取数据行的SQL命令,属性值为Command对象,使用原则同DeleteCommand。 UpdateCommand =“”:获取或设置用来更新数据源数据行的SQL命令,属性值为Command对象,使用原则同DeleteCommand。,6.2 ADO.NET数据库访问技术,(2)DataAdapter对象的常用方法 Fill(dataSet,srcTable):将SelectCommand属性指定的SQL命令执行结果所选取的数据行置入DataSet对象,其返回值为置入DataSet对象的数据行数,参数dataSet为欲置入数据行的DataSet对象,参数srcTabel为数据表对应的来源数据表名称。 Update(dataSet,srcTabel):调用InsertCommand、UpdateCommand或DeleteCommand属性指定的SQL命令将DataSet对象更新到数据源。 (3)DataAdapter对象的事件 FillError:当执行DataAdapter对象的Fill()方法发生错误时会触发此事件。 RowUpdated:当调用Update()方法并执行完SQL命令时会触发此事件。 RowUpdating:当调用Update()方法且在开始执行SQL命令之前会触发此事件。,6.2 ADO.NET数据库访问技术,2创建 DataSet对象 DataSet DS =new DataSet(); adapter.Fill(DS,srcTable); (1)DataSet对象的属性 CaseSensitive = True,False:获取或设置在DataTable对象内比较字符串时是否分辨字母的大小写,默认为False。 DataSetName = “”:当前DataSet的名称。如果不指定,则该属性值设置为“NewDataSet“。 Tables:获取DataTable集合。 (2)DataSet对象的方法 AcceptChanges():将所有变动过的数据更新到DataSet对象。 Clear():清除DataSet对象的数据,此方法会删除所有DataTable对象。 Clone():复制DataSet对象的结构。 Copy():复制DataSet对象的结构及数据。 GetChanges(Added,Deleted,Detached,Modified,Unchanged):此方法的参数可以省略不写,表示返回自上次调用AcceptChanges()方法后,DataSet对象变动过的数据。,6.2 ADO.NET数据库访问技术,3使用DataSet对象返回数据表操作结果 (1)数据表集合Tabels DataSet对象的所有数据表均存放在Tables(数据表集合)中,每个数据表都是一个DataTable对象,可以通过DataSet对象的Tables属性来访问DataTable。 (2)数据表的字段集合Columns Columns集合的Count属性:获取列集合中的元素总数。 Columns集合的Add(column,name)方法:在DatacolumnCollection中新增column字段或名称为name的字段,每个字段都是一个DataColumn对象,若没有指定参数,表示添加的字段是使用默认的名称,例如Column1、Counmn2等。,6.2 ADO.NET数据库访问技术,(3)数据表的数据行集合Rows Rows集合的Count属性:获取数据表所有包含的数据行数目。 Rows集合的方法 Add(row):在DataRowCollection中新增参数row指定的数据行(DataRow对象)。 Find(key):获取主键字段值为key的数据。 InsertAt(row,pos):将参数row指定的数据行插入到参数pos指定的位置。 Remove(row):删除参数row指定的数据行。 RemoveAt(index):删除下标为index的数据行。,【例6-5】使用DataSet对象读取Access数据库中性别表的所有数据。,6.2 ADO.NET数据库访问技术,4使用DataSet对象添加、删除或修改数据 (1)Parameters集合的属性和方法 Count:获取ParameterCollection中包含的参数数目。 Add(ParameterName,dbtype,size,sourceColumn):在ParameterCollection中添加名称为ParameterName的参数,其数据类型为dbtype,数据宽度为size,参数值引自DataSet对象的sourceSolumn字段,其中size,sourceColumn可以省略不写。 Remove(parameter):删除parameter指定的Parameter对象。 Remove(ParameterName,index):从ParameterCollection中删除名称为parameterName或下标为index的参数。,6.2 ADO.NET数据库访问技术,(2)Parameter对象的属性 DbType:获取或设置Parameter对象的数据类型。 Direction=Input,InputOutput,Output,ReturnValue:获取或设置Parameter对象的类型(输入参数、输入输出参数、输出参数、传值参数),默认为Input参数。 OleDbType:获取或设置Parameter对象的数据类型。 SourceColumn =“”:获取或设置DataSet对象的哪个字段要当作Parameter对象的参数。 Value = “”:获取或设置参数值。 【例6-6】修改例6-5,为性别数据表增加一行。,6.2 ADO.NET数据库访问技术,【例6-7】在例6-6的基础上增加数据表的修改、删除行功能。,6.2 ADO.NET数据库访问技术,6.2.4 使用CommandBuilder对象简化数据更新 CommandBuilder对象可以根据DataAdapter对象的SelectCommand属性执行结果所获取的字段,自动创建InsertCommand属性、UpdateCommand属性及DeleteCommand属性所需要的SQL命令,自动决定如何从数据源中新增、删除或修改数据。 但其使用有一定的局限性: (1)至少要设置DataAdapter对象的SelectCommand属性。 (2)若使用了CommandBuilder对象后又自行设置SQL命令,则以自行设置的SQL命令为标准。 (3)使用CommandBuilder对象执行效率较差。 (4)SelectCommand属性执行结果所获取的字段中必须包含主键,也即数据库必须有一个字段作为主键。 (5)数据表不能与其他数据表相关。 (6)数据表或字段不能包括特殊字符,例如空格、句号、引号及其他非字母或数字的字符,但中文字可以。,6.2 ADO.NET数据库访问技术,CommandBuilder对象创建在DataAdapter对象之上,其创建语法如下: OleDbCommandBuilder CmdBuilder = new OleDbCommandBuilder(adapter); /访问Access数据库 SqlCommandBuilder CmdBuilder = new SqlCommandBuilder(adapter); /访问SQL server 7.0以上数据库 【例6-8】用CommandBuilder对象简化例6-7。,6.3 DataGridView 控件,DataGridView 控件能够提供功能强大、形式灵活的数据显示方式,使用该控件能够显示小型到大型数据集的只读或可编辑视图,在Windows 窗体应用程序设计中使用非常广泛。,6.3 DataGridView 控件,6.3.1 DataGridView 控件的结构 DataGridView控件是DataGridView类的封装,DataGridView 控件由两种基本类型的对象组成:单元格和带区,带区又可以分为DataGridViewColumn 和 DataGridViewRow两种。,1DataGridViewCell 单元格是 DataGridView 的基本交互单元。 2DataGridViewColumn 与数据表的结构一致,DataGridView 控件包含了若干列,所存储数据的架构通过 DataGridView 控件的列来表示 。 3DataGridViewRow DataGridView 控件数据存储区的记录通过DataGridViewRow显示,对应数据表的记录,一行表示数据表的一条记录。,6.3 DataGridView 控件,6.3.2 DataGridView控件的常用属性和方法 1. DataGridView控件的常用属性 DataSource:设置 DataGridView 控件要绑定到的数据源,绑定以后控件将数据源列的名称自动用作列标头文本,并用数据源的内容进行填充。为表中的每个可见行创建一行,用户单击列标头时,将根据基础数据自动对行进行排序。 DataMember:如果数据源绑定的数据集包含多张表,通过该属性设定DataGridView控件所绑定到的数据表名称。 AutoGenerateColumns:当绑定DataGridView控件并将 AutoGenerateColumns 属性设置为true时,会使用与绑定数据源中包含的数据类型相应的默认列类型自动生成列,其缺省值为true。 Columns:列集合。可以自行创建任何列类的实例,并将其添加到由 Columns 属性返回的集合中。 ColumnCount:获取或设置DataGridView 控件中显示的列数。,6.3 DataGridView 控件,ColumnHeadersVisible:确定是否显示列标题。 AllowUserToOrderColumns:确定用户是否能将列移动到不同的位置。 AllowUserToAddRows:指示新记录的行是否呈现于控件底部。 AllowUserToDeleteRows:指示是否可以移除行。 CurrentCell:获取或设置DataGridView 控件中的当前单元格。 ColumnIndex:列索引。 Rows:获取一个集合,该集合包含DataGridView 控件中的所有行。 RowIndex:行索引。 CurrentRow:获取包含当前单元格的行。 SelectedRows:获取用户选定行的集合。 MultiSelect:设置DataGridView 控件是否允许选择多行。 Value:返回选中单元格的值。,6.3 DataGridView 控件,DataGridView 控件常用显示属性如表6-4所示。 表6-4 DataGridView 控件的显示属性,6.3 DataGridView 控件,2. DataGridView控件的常用事件 CurrentCellChanged:当选定的单元格发生变化时触发该事件。 CellContentClick:点击单元格时触发该事件。 3. DataGridView控件的常用方法 GetCellCount():获取单元格数目,参数为 DataGridViewElementStates.Selected时返回选中的单元格数目; GetRowCount():获取行数目,参数为 DataGridViewElementStates.Selected时返回选中的行数目; Clear():清除DataGridView控件的所有数据。,6.3 DataGridView 控件,6.3.3 使用DataGridView 控件 为DataGridView控件绑定数据源 绑定方式有三种: 方式一,直接绑定到数据表: dataGridView.DataSource=ds.Tables0; 方式二,绑定到数据表的数据视图: dataGridView.DataSource=ds.Tables0.DefaultView; 方式三,绑定到数据集: dataGridView.DataSource=ds; dataGridView.DataMember=ds.Tables0.TabelName; DataGridView控件绑定到数据集以后仅仅拷贝了数据集的一个架构,还需要对数据集填充数据才能显示记录,调用DataAdapter对象的Fill方法为数据集填充数据。,6.3 DataGridView 控件,2. DataGridView控件的列 (1)为DataGridView控件添加列 在设计视图中添加列入下图所示。,6.3 DataGridView 控件,(2)DataGridView控件列常用属性如表6-5所示。 表6-5 DataGridView控件列常用属性,6.3 DataGridView 控件,(3)删除列 打开列属性编辑窗口后点击“删除”按钮可以删除不需要的列。 (4)修改列的顺序 在“编辑列”属性窗口中选定要修改顺序的列,点击上下箭头修改列的显示顺序,参见图6-12。 (5)运行时允许用户对列重新排序 选中“启用列重新排序”复选框,则允许用户在运行时修改列显示顺序,参见图6-11。 (6)设置DataGridView 控件的按列自动排序功能 设置列的SortMode 属性为Automatic。,6.3 DataGridView 控件,3. DataGridView控件的行 (1)限制行的添加和删除 清除“启用添加”和“启用删除”复选框选中状态,能够防止用户在 DataGridView控件中输入新的数据行或删除现有行。 清除“启用编辑”复选框选中状态,可以使DataGridView控件完全只读。 (2)设计行样式 在DataGridView 控件 “属性”窗口中单击RowsDefaultCellStyle属性旁的省略号按钮可以打开行样式编辑窗口设置行的显示属性。 4. 保存数据表的修改 【例6-9】将在DataGridView 控件中对数据表的修改映射到数据库中。,6.3 DataGridView 控件,5. 获取选定的单元格、行和列 (1) 使用 SelectedCells 属性获取 DataGridView 控件中选中的单元格。 【例6-10】显示DataGridView 控件中选中单元格的索引。 (2)使用 SelectedRows 属性获取 DataGridView 控件中选中的行。 若要使用户能够选择行,必须将 SelectionMode 属性设置为 FullRowSelect 或 RowHeaderSelect。 【例6-11】显示DataGridView 控件中选中的行索引。 (3)使用 SelectedColumns 属性获取 DataGridView 控件中选中的列。 若要使用户能够选择列,必须将 SelectionMode 属性设置为 FullColumnSelect 或 ColumnHeaderSelect。 【例6-12】显示DataGridView 控件中选中的列索引。,6.3 DataGridView 控件,6.3.4 设计学生档案管理系统校历管理程序 【例6-13】在学生档案管理系统中设计校历管理程序。要求能根据开学日期、教学周数、假期周数通过日期函数在DataGridVew控件上创建校历表。 1设计要求 (1)程序窗体界面不重新创建,完善第4章创建的校历管理程序界面,为程序界面添加工具栏、学期选择区和学期校历表区,程序界面设计如图6-14所示,运行结果界面如图6-15所示。 (2)在“选择学期”区中用DataGridView控件显示各学期校历表中的学年与学期,点击“生成校历”按钮生成校历。 (3)在校历表区中用DataGridView控件显示选中“学年学期”的校历。,图6-14校历管理程序设计界面,图6-15校历管理程序运行界面,6.3 DataGridView 控件,2设计步骤 程序设计分为两步,第一步设计窗体界面,控件布局参见图6-14,工具栏仅设计一个“退出”按钮;学期选择区DataGridView控件的Name属性设置为dataGridViewXueqi,其余属性保持缺省设置;“生成校历”按钮Name属性设置为btn_CreateXiaoli,Text属性设置为“生成校历”;为校历表区DataGridView控件添加9个未绑定列,属性设置如表6-6所示。,表6-6 校历表区DataGridView控件列属性,6.3 DataGridView 控件,第二步,为相关控件添加代码实现程序功能。 (1)为学期选择区DataGridView控件绑定数据,绑定代码放在窗体加载事件中。 (2)为“生成校历”按钮添加代码,实现校历生成功能。 (3)为“退出”按钮添加代码,实现窗体退出功能。 (4)校历窗体关闭时设置窗体打开标志为False。,6.4 BindingSource 组件,BindingSource 组件用于简化将控件绑定到基础数据源的过程,可以看作是窗体上的控件到数据的一个间接层,通过将 BindingSource 组件绑定到数据源,然后再将窗体上的控件绑定到 BindingSource 组件可以完成将窗体上的控件绑定到数据的工作。 1. BindingSource 组件的常用属性 Count:获取基础列表中的总项数。 DataSource:获取或设置连接器绑定到的数据源,可以是数组、列表、数据集、数据表等。 DataMember:设置用于筛选查看哪些数据表的表达式。 Sort:如果数据源为 IBindingList,则获取或设置用于排序和排序顺序信息的列名。如果数据源为 IBindingListView,并支持高级排序,则获取用于排序和排序顺序信息的多个列名。 Filter:如果数据源是 IBindingListView,则会获取或设置用于过滤所查看行的表达式。,6.4 BindingSource 组件,2. BindingSource 组件的常用方法 RemoveCurrent():从列表中移除当前项。 EndEdit():将挂起的更改应用于基础数据源。 CancelEdit():取消当前的编辑操作。 Add():将现有项添加到内部列表中。 AddNew():向基础列表添加新项。 Insert():将一项插入列表中指定的索引处。 MoveFirst():移至列表中的第一项。 MoveLast():移至列表中的最后一项。 MoveNext():移至列表中的下一项。 MovePrevious():移至列表中的上一项。,6.5 BindingNavigator控件,BindingNavigator控件是一个数据记录导航控件,创建了一些标准化方法供用户搜索和更改 Windows 窗体中的数据,与 BindingSource 组件一起使用可以在窗体的数据记录之间移动并与这些记录进行交互。 1.BindingNavigator 控件包含的工具项,表6-7 BindingNavigator 控件包含的工具项,6.5 BindingNavigator控件,2. 常用属性 BindingSource属性:为BindingNavigator控件绑定数据源。 【例6-14】将TextBox控件和DataGridview控件绑定到BindingSource控件,为BindingNavigator控件添加“加载”、“保存”和“取消”按钮,实现加载、保存记录和取消操作的功能。,6.6 数据绑定,6.6.1 将DataGridView控件绑定到数组 DataGridView控件除了可以绑定到数据集和BindingSource控件外还可以绑定到数组。通过设置 BindingSource控件的DataSource 属性为数组绑定到数组。,【例6-15】将DataGridView 控件绑定到数组,显示数组内容。 首先定义一个Student学生类,为学生类添加三个属性。然后创建一个Windows窗体,在窗体上放一个DataGridView 控件,定义一个学生类的数组,设置DataGridView 控件的DataSource属性为已定义学生类的数组从而将数组绑定到DataGridView 控件。,6.6 数据绑定,6.6.2 为ListBox控件绑定数据 与绑定相关的属性主要有如下几个: (1)DataSource属性 DataSource属性设置ListBox控件要绑定到数据源,数据源可以是数据集、BindingSource控件,也可以是数组。 (2)DisplayMember属性 为ListBox控件绑定数据源以后可以将DisplayMember属性绑定到某个字段或属性。 (3)ValueMember属性 与DisplayMember属性一样,ValueMember属性也可以绑定到某个字段或属性。,6.6 数据绑定,6.6.3 为TextBox控件绑定数据 与ListBox控件一样,TextBox控件也可以进行数据绑定,通过DataBindings属性可以将Text属性绑定到数据源。,6.6 数据绑定,6.6.4 为Label控件绑定数据 Label控件也可以进行数据绑定,绑定方法与TextBox控件类似。,6.6 数据绑定,6.6.5 设计班级编码表维护程序 综合应用数据绑定与数据访问控件知识设计班级编码表维护程序。 1设计要求 (1)完善第4章创建的班级编码表维护程序界面,为程序界面添加工具栏、记录导航控件、查询条件输入区、基本信息显示区和信息列表显示,程序界面设计如图6-21所示,数据导航控件BindingNavigator与DataGridView控件记录同步移动,基本信息显示区显示当前选中记录的信息,信息列表显示按查询条件模糊查询到的班级信息。,6.6 数据绑定,图6-21 班级代码维护程序设计界面,6.6 数据绑定,2设计步骤 程序设计分为两步,第一步按设计要求设计窗体界面。程序窗体界面设计好以后添加一个包含班级表的数据集对象dataSet_BJM_Weihu,然后添加一个名为BindingSourceBJ的BindingSource控件并绑定到班级表。第二步实现程序功能。程序功能实现部分用代码完成,部分通过可视化设计的方式完成。 (1)数据导航BindingNavigator控件、DataGridView控件记录移动和基本信息显示同步通过可视化设计的方式完成,将DataGridView控件、BindingNavigator控件和基本信息显示区控件的数据源绑定到BindingSourceBJ控件,将基本信息显示区TextBox控件的Text属性、ComboBox控件的DiaplayMember属性和ValueMember属性绑定到BindingSourceBJ对应的字段,即可实现信息的同步显示。 (2)为数据集填充数据。,6.6 数据绑定,(3)班级所属系部名称和专业名称通过ComboBox控件以下拉列表的方式进行选择修改,所以窗体装载事件中还应包括为系部名称和专业名称ComboBox控件绑定系部和专业的代码 。 (4)保存班级编码表维护结果。为数据导航BindingNavigator控件添加一个“保存”按钮,为了与数据导航控件风格一致,其显示属性DisplayStyle设置为“Image”,并为其添加一个图片。对班级信息维护以后点击“保存”按钮将修改保存到数据库。 (5)按条件模糊查询班级信息。在查询条件中输入要查询班级的相关信息,会显示满足条件的班级,实现了按班级名称的模糊查询。输入信息发生变化时列表显示的班级信息会自动更新,实现代码放在TextBox控件的TextChanged事件中。 (6)定义Connection对象。程序多处用到数据库连接对象Connection,所以将Connection对象定义在函数体外,供窗体类的所有函数使用。,6.7 学生档案管理系统设计,6.7.1 设计学生档案查询程序 1设计要求 1)程序界面不重新创建,完善第4章创建的学生档案查询程序界面,为程序界面添加工具栏与状态栏,在工具栏添加“退出”按钮与“统计”按钮。点击“统计”按钮统计指定系的班级数、指定班级的学生总数与男、女生人数。并在状态栏中显示统计结果。 2)在工具栏下方放置一个GroupBox控件,构成学生档案查询条件框。 3)在查询条件框下方放置三个GroupBox控件,添加若干个Label控件与TextBox控件,用于显示当前记录中的学生个人档案信息。添加一个PictureBox控件显示当前记录中的学生照片。 4)在学生个人档案信息栏下方放置DataGridView控件,用于显示学生档案信息表tblStudent和学生档案详细信息表tlbStuDetail中满足查询条件的学生记录。 5)在状态栏中添加4个ToolStripStatusLabel控件显示统计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论