




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第9 9章章 ADO.NETADO.NET与数据操作与数据操作9.19.1 ADO.NETADO.NET简介简介9.29.2 数据库与数据库访问工具数据库与数据库访问工具9.39.3 ADO.NETADO.NET数据访问对象数据访问对象9.49.4 数据绑定技术数据绑定技术9.59.5 DataGridViewDataGridView控件控件9.69.6 数据处理数据处理9.79.7 存储过程存储过程9.89.8 语言集成查询(语言集成查询(LINQLINQ)29.1 ADO.NET9.1 ADO.NET简介简介 ADO.NETADO.NET是在是在ADOADO(ActiveX Data
2、ObjectsActiveX Data Objects)基础上发展基础上发展的新一代数据存取技术,是微软的新一代数据存取技术,是微软.NET.NET平台下提出的新的数平台下提出的新的数据访问模型。据访问模型。ADO.NETADO.NET设计了一系列对各类数据的访问形式,设计了一系列对各类数据的访问形式,并提供了对应的类,类中提供了与对应数据交互的属性和并提供了对应的类,类中提供了与对应数据交互的属性和方法,我们可以通过这些属性和方法对各种数据进行存取方法,我们可以通过这些属性和方法对各种数据进行存取操作。操作。 3数据访问操作的发展数据访问操作的发展 采用采用ODBCODBC(开发式数据互连)
3、数据访问形式。这种访问方式的前(开发式数据互连)数据访问形式。这种访问方式的前提是,只要公司提供某个数据库的数据驱动程序,就可以在程序提是,只要公司提供某个数据库的数据驱动程序,就可以在程序中对这个数据库操作。但是这种方式只能对结构化数据操作,对中对这个数据库操作。但是这种方式只能对结构化数据操作,对于非结构化数据无能为力。于非结构化数据无能为力。 采用采用OLE DBOLE DB数据访问形式。该方式设计了一个抽象层,由抽象层数据访问形式。该方式设计了一个抽象层,由抽象层负责对不同类型的数据提供统一的形式,程序与数据源打交道均负责对不同类型的数据提供统一的形式,程序与数据源打交道均经过抽象层。
4、达到了对结构化、非结构化数据均能按统一的方式经过抽象层。达到了对结构化、非结构化数据均能按统一的方式进行操作。进行操作。 采用采用ADOADO数据模型。该模型在数据模型。该模型在OLE DBOLE DB的基础上又重新设计了访问层,的基础上又重新设计了访问层,对高级语言编写的程序提供了统一的以对高级语言编写的程序提供了统一的以“行行”为操作目标的数据为操作目标的数据访问形式。访问形式。 采用采用ADO.NETADO.NET数据访问模型。该模型重新整合数据访问模型。该模型重新整合OLE DBOLE DB和和ADOADO,并在,并在此基础上构造了新的对象模型。该模型既提供了保持连接的数据此基础上构造
5、了新的对象模型。该模型既提供了保持连接的数据访问形式,又提供了松耦合的、以访问形式,又提供了松耦合的、以DataSetDataSet对象为操作目标的数据对象为操作目标的数据访问形式。访问形式。4ADO.NETADO.NET数据访问模型数据访问模型 VS2008VS2008开发环境下使用的是开发环境下使用的是ADO.NET 2.0ADO.NET 2.0。 在在ADO.NET 2.0ADO.NET 2.0中,中,SQLSQL数据提供程序使用统一的数据提供程序使用统一的SQLSQL数据数据访问模型实现对各种使用访问模型实现对各种使用SQLSQL语句的数据库的数据访问支语句的数据库的数据访问支持。例如
6、持。例如OracleOracle、SQL ServerSQL Server、DB2DB2、AccessAccess等。等。59.2 9.2 数据库与数据库访问工具数据库与数据库访问工具9.2.1 SQL Server 9.2.1 SQL Server 数据库的分类数据库的分类 VS2008VS2008中有中有3 3种与种与SQL ServerSQL Server数据库的连接形式,分别为数据库的连接形式,分别为“SQSQL ServerL Server”、“SQL Server Compact 3.5”SQL Server Compact 3.5”和和“SQL Server“SQL Server
7、数据库文件数据库文件”。1 1Microsoft SQL ServerMicrosoft SQL Server 该选项用于和远程服务器上的数据库连接。该选项用于和远程服务器上的数据库连接。2 2Microsoft SQL ServerMicrosoft SQL Server数据库文件数据库文件 该选项用于和该选项用于和SQL Server ExpressSQL Server Express数据库文件建立连接。本数据库文件建立连接。本章的所有例子均用章的所有例子均用SQL Server ExpressSQL Server Express来讲解。来讲解。69.2.1 SQL Server 9.2.
8、1 SQL Server 数据库的分类数据库的分类3 3Microsoft SQL Server Compact 3.5Microsoft SQL Server Compact 3.5 SQL Server Compact 3.5 SQL Server Compact 3.5是一个更简单的是一个更简单的SQL ServerSQL Server数据库版本,数数据库版本,数据库扩展名为据库扩展名为.sdf.sdf,该版本是基于文件的数据库,而不是基于服务的数,该版本是基于文件的数据库,而不是基于服务的数据库,这种类型的数据库一般用于移动设备应用程序。据库,这种类型的数据库一般用于移动设备应用程序。
9、4 4本地数据库文件本地数据库文件 不论是哪种数据库文件,只要是保存在本地计算机上,就称其为本地数不论是哪种数据库文件,只要是保存在本地计算机上,就称其为本地数据库文件。据库文件。 在在“新建项新建项”模板中,本地数据库文件又分为模板中,本地数据库文件又分为“本地数据库本地数据库”和和“基于基于服务的数据库服务的数据库”,模板中的,模板中的“本地数据库本地数据库”是指是指SQL Server Compact 3.SQL Server Compact 3.5 5的的.sdf.sdf文件,文件,“基于服务的数据库基于服务的数据库”是指是指SQL Server ExpressSQL Server E
10、xpress的的.mdf.mdf文件。文件。5 5数据库文件的属性设置数据库文件的属性设置 项目中本地数据库文件的项目中本地数据库文件的【复制到输出目录复制到输出目录】属性的默认值如下:属性的默认值如下: (1 1)对于)对于.sdf.sdf文件,其默认值为文件,其默认值为“如果较新则复制如果较新则复制”。 (2 2)对于)对于.mdf.mdf文件,其默认值为文件,其默认值为“始终复制始终复制”。79.2.2 9.2.2 数据访问可视化工具数据访问可视化工具1 1服务器资源管理器服务器资源管理器2 2数据集设计器数据集设计器3 3数据源数据源8本章选用示例数据库本章选用示例数据库 数据库数据库
11、MyDatabase.mdfMyDatabase.mdf 数据表:见数据表:见P235P235页定义页定义MyTable1MyTable1学院编码对照表学院编码对照表MyTable2MyTable2基本情况表基本情况表MyTable3MyTable3家庭成员表家庭成员表 数据类型说明:数据类型说明:charchar、VarcharVarcharNcharNchar、NvarcharNvarcharDatetimeDatetimeImageImage、BinaryBinary、VarBinaryVarBinaryTextText、NTextNText99.3 9.3 ADO.NETADO.NET
12、数据访问对象数据访问对象 ADO.NETADO.NET常用的对象模型:常用的对象模型: (1) Connection(1) Connection对象对象 (2) Command(2) Command对象对象 (3) DataReader(3) DataReader对象对象 (4) DataAdapter(4) DataAdapter对象对象 (5) Parameter(5) Parameter对象对象 (6) Transaction(6) Transaction对象对象这些对象提供了对数据库的各种不同的访问功能这些对象提供了对数据库的各种不同的访问功能对于不同的数据库,区别仅是前缀不同,例如:
13、对于不同的数据库,区别仅是前缀不同,例如: SQL ServerSQL Server数据库:数据库:SqlSqlConnectionConnection、SqlSqlDataAdapterDataAdapter Oracle Oracle数据库:数据库:OracleOracleConnectionConnection、OracleOracleDataAdapterDataAdapter 109.3.1 SqlConnection9.3.1 SqlConnection对象对象 ADO.NETADO.NET使用使用SqlConnectionSqlConnection对象与对象与SQL Server
14、SQL Server进行连接。进行连接。连接字符串的常用形式有两种:连接字符串的常用形式有两种:(1 1)使用)使用WindowsWindows集成安全身份验证,例如:集成安全身份验证,例如: string connectionString = string connectionString = Integrated Security=SSPI; Database=MyDatabase.mdf; Integrated Security=SSPI; Database=MyDatabase.mdf; Server=localhost;Server=localhost;(2 2)使用用户名、密码形式
15、,例如:)使用用户名、密码形式,例如:string connectionString = string connectionString = “ server=localhost; uid=sa; server=localhost; uid=sa; pwd=123; database=MyDatabase.mdfpwd=123; database=MyDatabase.mdf”; ; 但是这种连接方式的安全性不高,比较容易受到黑客的攻击但是这种连接方式的安全性不高,比较容易受到黑客的攻击119.3.1 SqlConnection9.3.1 SqlConnection对象(续)对象(续) 如果与
16、如果与SQL Server Express EditionSQL Server Express Edition创建连接,可以直接使创建连接,可以直接使用附加数据库名的方式。连接字符串的一般形式为:用附加数据库名的方式。连接字符串的一般形式为:string connectionString =string connectionString =“Data Source=.SQLEXPRData Source=.SQLEXPRESS; AttachDbFilename=|DataDirectory|DatabaseName;ESS; AttachDbFilename=|DataDirectory|D
17、atabaseName; + Integrated Security=True; Connect Timeout=60; + Integrated Security=True; Connect Timeout=60; User Instance=TrueUser Instance=True“ 例如,下一页例如,下一页129.3.1 SqlConnection9.3.1 SqlConnection对象(续)对象(续) string connectionString =Data Source=.SQLEXPRESS; string connectionString =Data Source=.SQ
18、LEXPRESS; AttachDbFilename=|DataDirectory|MyDataBase.mdf; AttachDbFilename=|DataDirectory|MyDataBase.mdf; + Integrated Security=True; Connect Timeout=60; + Integrated Security=True; Connect Timeout=60; User Instance=True; User Instance=True; SqlConnection conn = new SqlConnection(connectionString);
19、SqlConnection conn = new SqlConnection(connectionString);实际上,连接字符串是可以自动生成的。在使用创建数据库之实际上,连接字符串是可以自动生成的。在使用创建数据库之后,系统会自动生成一个连接字符串,并保存到配置文件中后,系统会自动生成一个连接字符串,并保存到配置文件中例如:例如: Properties.Settings.Default.MyDatabaseConnectionString Properties.Settings.Default.MyDatabaseConnectionString 确定连接字符串后,就可以创建确定连接字符
20、串后,就可以创建SqlConnectionSqlConnection对象。对象。139.3.1 SqlConnection9.3.1 SqlConnection对象(续)对象(续) 为了简化书写,还需要在代码中添加对命名空间的引用:为了简化书写,还需要在代码中添加对命名空间的引用: using using System.Data.SqlClientSystem.Data.SqlClient; ; 可通过连接字符串直接创建可通过连接字符串直接创建SqlConnectionSqlConnection对象,对象, 例如:例如:SqlConnectionSqlConnection connconn =
21、 new = new SqlConnectionSqlConnection( (connStringconnString);); 或者:或者:SqlConnectionSqlConnection connconn = new = new SqlConnectionSqlConnection();(); conn.ConnectionStringconn.ConnectionString = = connStringconnString; ;149.3.2 9.3.2 SqlCommandSqlCommand对象对象 在在ADO.NETADO.NET中,有两种操作数据库的方式:中,有两种操作数据
22、库的方式:(1 1)采用无连接的方式。)采用无连接的方式。(2 2)采用保持连接的方式。)采用保持连接的方式。不论采用哪种方式,都可以通过不论采用哪种方式,都可以通过SqlCommandSqlCommand对象提供的方对象提供的方法传递对数据库操作的命令,并返回命令执行的结果。法传递对数据库操作的命令,并返回命令执行的结果。159.3.2 9.3.2 SqlCommandSqlCommand对象(续)对象(续) 在保持连接的方式下操作数据库的一般步骤为:在保持连接的方式下操作数据库的一般步骤为:1) 1) 创建创建SqlConnectionSqlConnection的实例;的实例;2) 2)
23、创建创建SqlCommandSqlCommand的实例;的实例;3) 3) 打开连接;打开连接;4) 4) 执行命令;执行命令;5) 5) 关闭连接。关闭连接。 SqlCommandSqlCommand对象提供了多种完成对数据库操作的方法。常对象提供了多种完成对数据库操作的方法。常用有:用有: 1. 1. ExecuteNonQueryExecuteNonQuery 该方法执行该方法执行SQLSQL语句的结果,但不返回命令执行的表数据,语句的结果,但不返回命令执行的表数据,仅返回操作所影响的行数。仅返回操作所影响的行数。 2. 2.ExecuteReaderExecuteReader:返回一个
24、:返回一个SqlDataReaderSqlDataReader对象。对象。169.3.2 9.3.2 SqlCommandSqlCommand对象(续)对象(续) 3. 3. ExecuteScaler()ExecuteScaler() 该方法用于执行该方法用于执行SELECTSELECT查询,得到的返回结果为一个值查询,得到的返回结果为一个值的情况,比如使用的情况,比如使用countcount函数求表中记录个数或者使用函数求表中记录个数或者使用sumsum函数求和等。函数求和等。 17SQLSQL语句中使用参数语句中使用参数 SqlParameterSqlParameter对象对象表示表示S
25、qlCommandSqlCommand的参数。的参数。其中参数名称不区分大小写。其中参数名称不区分大小写。 使用方法使用方法 /声明一个参数声明一个参数SqlParameter parameter = cmd.Parameters.Add( CategoryName, SqlParameter parameter = cmd.Parameters.Add( CategoryName, SqlDbType.NVarChar, 15); SqlDbType.NVarChar, 15); / /为参数赋值为参数赋值 parameter.Value = Beverages; parameter.Val
26、ue = Beverages; 或者:或者: cmd.Parameters.Add( CategoryName, SqlDbType.NVarChar, 15);cmd.Parameters.Add( CategoryName, SqlDbType.NVarChar, 15); cmd.Parameters cmd.Parameters“CategoryNameCategoryName”.Value= Beverages; .Value= Beverages; 189.3.2 9.3.2 SqlCommandSqlCommand对象(续)对象(续)【例例9-29-2】演示演示SqlComman
27、dSqlCommand对象的用法。对象的用法。199.3.3 9.3.3 SqlDataAdapterSqlDataAdapter对象对象SqlDataAdapterSqlDataAdapter对象通过无连接的方式完成数据库和本地对象通过无连接的方式完成数据库和本地DataDataSetSet之间的交互。一般步骤:之间的交互。一般步骤:1) 1) 创建创建SqlConnectionSqlConnection的实例;的实例;2) 2) 创建创建SqlDataAdapterSqlDataAdapter的实例,需要的话,根据的实例,需要的话,根据selectselect语句语句生成其他生成其他SQL
28、SQL语句;语句;3) 3) 创建创建DataSetDataSet的实例;的实例;4) 4) 使用使用FillFill方法将数据库中的表填充到方法将数据库中的表填充到DataSetDataSet表中;表中;5) 5) 利用利用DataGridViewDataGridView或者其他控件对象编辑或显示数据;或者其他控件对象编辑或显示数据;6) 6) 需要的话,使用需要的话,使用UpdateUpdate方法更新数据库。方法更新数据库。209.3.3 9.3.3 SqlDataAdapterSqlDataAdapter对象(续)对象(续) SqlDataAdapterSqlDataAdapter对象
29、通过对象通过SelectCommandSelectCommand、Insert CommandInsert Command、U UpdateCommandpdateCommand和和DeleteCommandDeleteCommand属性为后台数据库提供对应的属性为后台数据库提供对应的操作命令,并传递需要的参数。操作命令,并传递需要的参数。 一般情况下,只需要提供一般情况下,只需要提供SELECTSELECT语句和连接字符串创建语句和连接字符串创建SqlDatSqlDataAdapteraAdapter对象,然后利用对象,然后利用SqlCommandBuilderSqlCommandBuild
30、er对象生成对象生成InsertCInsertCommandommand、UpdateCommandUpdateCommand和和DeleteCommandDeleteCommand属性。属性。219.3.3 9.3.3 SqlDataAdapterSqlDataAdapter对象(续)对象(续)【例例9-39-3】根据选择的表名打开数据库表,并将表中数据通过根据选择的表名打开数据库表,并将表中数据通过DaDataGridViewtaGridView显示出来。显示出来。设计界面如下:设计界面如下: buttonSave dataGridView1 buttonOpen 229.3.4 Data
31、Table9.3.4 DataTable对象对象 ADO.NETADO.NET可以在与数据库断开连接的方式下通过可以在与数据库断开连接的方式下通过DataSetDataSet或或DataTableDataTable对象进行数据处理,当需要更新数据时才重新对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源。与数据源进行连接,并更新数据源。 DataTableDataTable对象表示保存在本机内存中的表,它提供了对对象表示保存在本机内存中的表,它提供了对表中行列数据对象的各种操作。可以直接将数据从数据库表中行列数据对象的各种操作。可以直接将数据从数据库填充到填充到DataTa
32、bleDataTable对象中,也可以将对象中,也可以将DataTableDataTable对象添加到对象添加到现有的现有的DataSetDataSet对象中。对象中。239.3.4 DataTable9.3.4 DataTable对象(续)对象(续) 在断开连接的方式下,在断开连接的方式下,DataSetDataSet对象提供了和关系数据库一样的对象提供了和关系数据库一样的关系数据模型,代码中可以直接访问关系数据模型,代码中可以直接访问DataSetDataSet对象中的对象中的DataTableDataTable对象,也可以添加、删除对象,也可以添加、删除DataTableDataTabl
33、e对象。对象。249.3.4 DataTable9.3.4 DataTable对象(续)对象(续)【例例9-49-4】自定义一个自定义一个DataTableDataTable对象,直接创建行列信息,并对象,直接创建行列信息,并在在DataGridViewDataGridView中显示创建的内容。中显示创建的内容。259.3.5 DataSet9.3.5 DataSet对象对象 1. 1. 创建创建DataSetDataSet对象对象 使用创建的使用创建的DataSetDataSet对象可以完成各种数据操作。对象可以完成各种数据操作。注意:注意:利用向导生成的数据库数据源是一个强类型的利用向导生
34、成的数据库数据源是一个强类型的DataSetDataSet以及一以及一对或多对强类型的对或多对强类型的DataTableDataTable和和TableAdapterTableAdapter的组合。的组合。 2. 2. 填充填充DataSetDataSet对象对象 创建创建DataSetDataSet后,就可以使用后,就可以使用SqlDataAdapterSqlDataAdapter对象把数据导入对象把数据导入到到DataSetDataSet对象中,比如通过对象中,比如通过FillFill方法将数据填充到方法将数据填充到DataSetDataSet中中的某个表中。的某个表中。 269.4 9.
35、4 数据绑定技术数据绑定技术数据绑定是指在程序运行时,窗体上的控件自动将其属性和数据绑定是指在程序运行时,窗体上的控件自动将其属性和数据源关联在一起。数据绑定技术是数据操作中使用最频数据源关联在一起。数据绑定技术是数据操作中使用最频繁的技术,利用数据绑定技术能极大地提高项目开发的效繁的技术,利用数据绑定技术能极大地提高项目开发的效率。率。u简单数据绑定与复杂数据绑定。简单数据绑定与复杂数据绑定。u数据源组件。数据源组件。u导航控件。导航控件。279.4.1 9.4.1 简单数据绑定与复杂数据绑定简单数据绑定与复杂数据绑定WindowsWindows窗体提供了两种类型的数据绑定:简单数据绑定和复
36、窗体提供了两种类型的数据绑定:简单数据绑定和复杂数据绑定。杂数据绑定。1.1.简单数据绑定指将一个控件的某个属性绑定到单个值。这种简单数据绑定指将一个控件的某个属性绑定到单个值。这种类型的绑定适用于只显示单个值的控件,一般将这些控件类型的绑定适用于只显示单个值的控件,一般将这些控件绑定到数据库中某个记录的一个字段。比如绑定到数据库中某个记录的一个字段。比如TextBoxTextBox等控件。等控件。2.2.复杂数据绑定指将一个控件绑定到多个值。这种类型的绑定复杂数据绑定指将一个控件绑定到多个值。这种类型的绑定适用于显示多个值的控件,例如适用于显示多个值的控件,例如DataGridViewDat
37、aGridView控件、控件、ListBListBoxox控件和控件和ComboBoxComboBox控件等。控件等。289.4.1 9.4.1 简单数据绑定与复杂数据绑定简单数据绑定与复杂数据绑定从实现数据绑定的方式上,有从实现数据绑定的方式上,有3 3种实现方法:种实现方法:u在设计界面下通过鼠标拖放实现常用属性的数据绑定;在设计界面下通过鼠标拖放实现常用属性的数据绑定;u在设计界面下设置控件的在设计界面下设置控件的DataBindingsDataBindings属性,然后利用可属性,然后利用可视化界面实现各种属性的数据绑定;视化界面实现各种属性的数据绑定;u直接编写代码实现数据绑定。直接
38、编写代码实现数据绑定。299.4.1 9.4.1 简单数据绑定与复杂数据绑定简单数据绑定与复杂数据绑定实际上,不论采用哪种方式,从本质上来讲,都是利用实际上,不论采用哪种方式,从本质上来讲,都是利用BindingBindingSourceSource组件来实现数据绑定的。组件来实现数据绑定的。1 1通过鼠标拖放实现数据绑定通过鼠标拖放实现数据绑定对于比较简单的数据库应用,大部分情况下,都可以在设计界对于比较简单的数据库应用,大部分情况下,都可以在设计界面下通过鼠标拖放完成绑定功能。常用方式有:面下通过鼠标拖放完成绑定功能。常用方式有: 将将【数据源数据源】中的数据表字段直接拖放到设计窗体上,让
39、系中的数据表字段直接拖放到设计窗体上,让系统自动创建和该表字段绑定的控件。统自动创建和该表字段绑定的控件。 将将【数据源数据源】中的表直接拖放到设计窗体上,让系统自动创中的表直接拖放到设计窗体上,让系统自动创建和该表绑定的控件。建和该表绑定的控件。 将将【数据源数据源】中的字段直接拖放到窗体上已有的控件上,该中的字段直接拖放到窗体上已有的控件上,该控件即自动绑定到拖放的表字段。控件即自动绑定到拖放的表字段。309.4.1 9.4.1 简单数据绑定与复杂数据绑定简单数据绑定与复杂数据绑定2 2通过设置控件的属性实现数据绑定通过设置控件的属性实现数据绑定 工具箱中提供的每个控件,都有一个工具箱中提
40、供的每个控件,都有一个【DataBindingsDataBindings】属性,属性,用于绑定数据源。用于绑定数据源。利用它实现数据绑定的步骤如下。利用它实现数据绑定的步骤如下。 (1 1)在窗体中,选择该控件并显示属性窗口,然后展开)在窗体中,选择该控件并显示属性窗口,然后展开【(DataBindings)(DataBindings)】属性,此时即看到与控件对应的默认属性,此时即看到与控件对应的默认绑定属性。实际上,用鼠标拖放所绑定的属性都是自动绑绑定属性。实际上,用鼠标拖放所绑定的属性都是自动绑定到默认的属性。定到默认的属性。 (2 2)单击)单击【(Advanced)(Advanced)
41、】属性右边的属性右边的“”按钮,显示按钮,显示“格式设置和高级绑定格式设置和高级绑定”对话框,再此对话框中,选择要对话框,再此对话框中,选择要绑定的数据源和被绑定的属性即可。绑定的数据源和被绑定的属性即可。319.4.1 9.4.1 简单数据绑定与复杂数据绑定简单数据绑定与复杂数据绑定3 3直接编写代码实现数据绑定直接编写代码实现数据绑定如果程序员希望灵活地控制绑定的数据库表字段,也可以直接如果程序员希望灵活地控制绑定的数据库表字段,也可以直接编写绑定代码。采用这种方式实现数据绑定的步骤如下。编写绑定代码。采用这种方式实现数据绑定的步骤如下。 从从【工具箱工具箱】中拖放一个中拖放一个Bindi
42、ngSourceBindingSource组件、一个自动生组件、一个自动生成的强类型的成的强类型的DataSetDataSet组件、一个强类型的组件、一个强类型的DataAdapterDataAdapter组组件到设计窗体上。如果窗体上已经有这些对象,则不需要件到设计窗体上。如果窗体上已经有这些对象,则不需要此步骤;此步骤; 从从【工具箱工具箱】中拖放一个被绑定的控件到设计窗体上,修中拖放一个被绑定的控件到设计窗体上,修改控件的改控件的【NameName】属性为有意义的名称。属性为有意义的名称。 添加绑定代码。添加绑定代码。329.4.1 9.4.1 简单数据绑定与复杂数据绑定简单数据绑定与复
43、杂数据绑定【例例9-59-5】演示常用控件的数据绑定方法。演示常用控件的数据绑定方法。339.4.2 BindingSource9.4.2 BindingSource组件组件1 1、BindingSourceBindingSource组件组件 用统一的数据绑定中间层绑定不同数据源。用统一的数据绑定中间层绑定不同数据源。 用法用法: (1)(1)将将BindingSourceBindingSource组件绑定到实际数据源组件绑定到实际数据源 (2)(2)将控件绑定的数据源设置为将控件绑定的数据源设置为BindingSourceBindingSource组件组件349.4.2 BindingSou
44、rce9.4.2 BindingSource组件(续)组件(续) BindingSourceBindingSource组件常用的属性主要有:组件常用的属性主要有: 1) DataSource1) DataSource属性:获取或设置绑定到属性:获取或设置绑定到BindingSourceBindingSource的的数据源。数据源。 2) Sort2) Sort属性:获取或设置数据源中各列的排序字符串。属性:获取或设置数据源中各列的排序字符串。 3) Filter3) Filter属性:获取或设置数据源中记录筛选条件字符串。属性:获取或设置数据源中记录筛选条件字符串。 4) Current4)
45、Current属性:指绑定列表中的当前项。属性:指绑定列表中的当前项。359.4.2 BindingSource9.4.2 BindingSource组件(续)组件(续)【例例9-69-6】设计一个设计一个WindowsWindows应用程序,显示本机当前支持的所应用程序,显示本机当前支持的所有字体。有字体。左图为设计界面,右图为运行效果。左图为设计界面,右图为运行效果。369.4.3 BindingNavigator9.4.3 BindingNavigator组件组件BindingNavigatorBindingNavigator组件同时提供了两种功能:组件同时提供了两种功能:(1)(1)提
46、供了对窗体中的数据进行导航控制和常用数据操作的方法提供了对窗体中的数据进行导航控制和常用数据操作的方法(2)(2)提供了一个提供了一个ToolStripToolStrip控件形式的导航条。控件形式的导航条。常用属性:常用属性:1) 1) BindingSourceBindingSource:指定组件所要绑定的:指定组件所要绑定的BindingSourceBindingSource对象。对象。2) Dock2) Dock:确定:确定BindingNavigatorBindingNavigator组件提供的组件提供的ToolStripToolStrip在窗体设在窗体设计器中的位置。计器中的位置。3
47、79.4.3 BindingNavigator9.4.3 BindingNavigator组件组件【例例9-79-7】设计一个设计一个WindowsWindows窗体应用程序,自动将窗体应用程序,自动将MyDatabasMyDatabase.mdfe.mdf中包含的所有表的名称显示出来供用户选择,同时在中包含的所有表的名称显示出来供用户选择,同时在界面中提供记录导航和添加、删除等功能,并能保存修改界面中提供记录导航和添加、删除等功能,并能保存修改后的结果。后的结果。左图为设计效果,右图为运行效果。左图为设计效果,右图为运行效果。389.5 DataGridView9.5 DataGridVie
48、w控件控件用途:显示与编辑二维表数据用途:显示与编辑二维表数据1.1.默认功能默认功能 如果绑定了数据源,则会自动为数据源中的每个字段单独创建如果绑定了数据源,则会自动为数据源中的每个字段单独创建一列。一列。 自动使用字段名称作为列标题。列标题是固定的,即在列表中自动使用字段名称作为列标题。列标题是固定的,即在列表中向下移动滚动条时列标题不会滚动出视图。向下移动滚动条时列标题不会滚动出视图。 支持自动排序。在列标题中单击或双击,该字段中的值就会按支持自动排序。在列标题中单击或双击,该字段中的值就会按升序或降序排序。字母顺序区分大小写。升序或降序排序。字母顺序区分大小写。 单击单击DataGri
49、dViewDataGridView左上角的方块可以选择整个表。左上角的方块可以选择整个表。 支持自动调整大小功能。在标题之间的列分隔符上双击,该分支持自动调整大小功能。在标题之间的列分隔符上双击,该分隔符左边的列就会自动按照单元格的内容展开或收缩。隔符左边的列就会自动按照单元格的内容展开或收缩。399.5 DataGridView9.5 DataGridView控件控件2.2.绑定数据源绑定数据源利用利用DataGridViewDataGridView控件操作数据库中的数据时,一般都是利用控件操作数据库中的数据时,一般都是利用数据绑定技术来实现。步骤如下。数据绑定技术来实现。步骤如下。(1 1
50、)将数据库中的表数据读到)将数据库中的表数据读到DataSetDataSet或者或者DataTableDataTable中;中;(2 2)创建一个)创建一个BindingSourceBindingSource对象,将对象,将BindingSourceBindingSource对象绑对象绑定到定到DataSetDataSet或者直接绑定到或者直接绑定到DataTableDataTable;(3 3)将)将DataGridViewDataGridView绑定到绑定到BindingSourceBindingSource对象。对象。409.5 DataGridView9.5 DataGridView控
51、件控件【例【例9-89-8】演示演示DataGridViewDataGridView常用功能。常用功能。设计界面如下:设计界面如下:419.5 DataGridView9.5 DataGridView控件控件3.3.标题及行列控制标题及行列控制DataGridViewDataGridView提供了两个关键集合提供了两个关键集合ColumnsColumns和和RowsRows,用于处理整,用于处理整个数据集。其中个数据集。其中ColumnsColumns是是DataGridViewColumnDataGridViewColumn对象的集合,对象的集合,RowsRows是是DataGridView
52、RowDataGridViewRow对象的集合,每个对象的集合,每个DataGridViewRowDataGridViewRow对象又都包含一组对象又都包含一组DataGridViewCellDataGridViewCell对象。对象。429.5 DataGridView9.5 DataGridView控件控件【例例9-99-9】在例在例9-89-8的程序中,实现的程序中,实现“标题及行列控制标题及行列控制”中的所中的所有按钮功能。有按钮功能。 标题控制标题控制 隔行显示背景色隔行显示背景色 防止添加和删除行防止添加和删除行 判断用户同时选择了哪些行判断用户同时选择了哪些行 显示显示/ /隐藏
53、指定的列隐藏指定的列 将某些列设为只读将某些列设为只读 更改列的显示顺序更改列的显示顺序 固定左边的某些列固定左边的某些列 自动调整各列宽度自动调整各列宽度439.5 DataGridView9.5 DataGridView控件控件4.4.单元格控制单元格控制【例例9-109-10】在例在例9-89-8的程序中,实现的程序中,实现“单元格控制单元格控制”中的所有按中的所有按钮功能。钮功能。 判断用户同时选择了哪些单元格判断用户同时选择了哪些单元格 突出显示单元格突出显示单元格 日期时间显示格式控制日期时间显示格式控制 在单元格中嵌入下拉列表框在单元格中嵌入下拉列表框449.5 DataGrid
54、View9.5 DataGridView控件控件5.5.异常处理异常处理【例例9-119-11】在例在例9-89-8的程序中,实现的程序中,实现“常用事件常用事件”中的所有按中的所有按钮功能。钮功能。 CellFormattingCellFormatting事件事件 DataErrorDataError事件事件 CellValidatingCellValidating事件事件459.6 9.6 数据处理数据处理9.6.1 9.6.1 图像数据处理图像数据处理1 1利用利用SQLSQL语句实现图像导入导出语句实现图像导入导出(1 1)导入图片)导入图片string connString = Pr
55、operties.Settings.Default.MyDatabaseConnectionString;string connString = Properties.Settings.Default.MyDatabaseConnectionString;string sql = update MyTable2 set string sql = update MyTable2 set 照片照片=Photo where =Photo where 姓名姓名=StudentName;=StudentName;using (SqlConnection conn = new SqlConnection(
56、connString)using (SqlConnection conn = new SqlConnection(connString) SqlCommand cmd = new SqlCommand(sql, conn); SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.Add(StudentName, SqlDbType.NVarChar).Value = cmd.Parameters.Add(StudentName, SqlDbType.NVarChar).Value = 王小琳王小琳; OpenFileDialog
57、openFileDialog1 = new OpenFileDialog( ); OpenFileDialog openFileDialog1 = new OpenFileDialog( ); if (openFileDialog1.ShowDialog( ) = DialogResult.OK) if (openFileDialog1.ShowDialog( ) = DialogResult.OK) Stream myStream = openFileDialog1.OpenFile( ); Stream myStream = openFileDialog1.OpenFile( ); byt
58、e bt = new bytemyStream.Length; byte bt = new bytemyStream.Length; myStream.Read(bt, 0, (int)myStream.Length); myStream.Read(bt, 0, (int)myStream.Length); cmd.Parameters.Add(Photo, SqlDbType.Image).Value = bt; cmd.Parameters.Add(Photo, SqlDbType.Image).Value = bt; conn.Open( ); conn.Open( ); cmd.Exe
59、cuteNonQuery( ); cmd.ExecuteNonQuery( ); myStream.Dispose( ); myStream.Dispose( ); 469.6.1 9.6.1 图像数据处理图像数据处理(2 2)导出图片)导出图片string connString = Properties.Settings.Default.MyDatabaseConnectionString;string connString = Properties.Settings.Default.MyDatabaseConnectionString;string sql = select string
60、sql = select 照片照片 from MyTable2 where from MyTable2 where 姓名姓名=StudentName;=StudentName;using (SqlConnection conn = new SqlConnection(connString)using (SqlConnection conn = new SqlConnection(connString) SqlCommand cmd = new SqlCommand(sql, conn); SqlCommand cmd = new SqlCommand(sql, conn); cmd.Param
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- YC/T 593-2023打叶复烤加工服务能力评价办法
- LY/T 3389-2024植物新品种特异性、一致性、稳定性测试指南蚊母树属
- 2025年中考语文二模试卷-1
- 福建省厦门市一中2020届高三最后一模考试试题(语文解析版)
- (广东高考卷 自主命题6科)2022年广东省普通高中学业水平选择性考试高考物化生+政史地真题试卷及答案
- 白酒的生产工艺以大曲酒为例77课件
- 《风景园林招投标与概预算》试题A附参考答案详解(预热题)
- 2025年黑龙江省五常市辅警招聘考试试题题库含答案详解(研优卷)
- 2024-2025学年度下学期七年级历史期末复习+期末考试押题课件(一)-2024-2025学年度下学期七年级历史期末复习
- ARDS患者的液体管理策略2025
- 触电急救97课件
- T/CAQI 96-2019产品质量鉴定程序规范总则
- 浙江省六校联盟2025届高三下学期5月模拟考试英语试卷(含音频)
- 河南省青桐鸣大联考普通高中2024-2025学年高三考前适应性考试语文试题及答案
- 第22讲 杠杆 滑轮 2025年中考物理专题复习(广东)课件
- 火电厂安全培训
- 山东省烟台市、德州市、东营市三市东营2025年高考适应性考试烟台德州东营二模英语试卷+答案
- 护理带教教学课件
- 游泳馆合同协议书模板
- 山东财经面试试题及答案
- 2025年租房合同房东模板
评论
0/150
提交评论