第14章数据库与应用程序接口_第1页
第14章数据库与应用程序接口_第2页
第14章数据库与应用程序接口_第3页
第14章数据库与应用程序接口_第4页
第14章数据库与应用程序接口_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

1、2通过前面的学习,我们已掌握了通过前面的学习,我们已掌握了SQL Server 2008的基本技术,具备了在后台对数据库进行管的基本技术,具备了在后台对数据库进行管理的能力,那么,如何在前台以理的能力,那么,如何在前台以windows应用程应用程序或网页的形式对后台的数据进行插入、修改、序或网页的形式对后台的数据进行插入、修改、删除呢?删除呢?3本章学习任务本章学习任务q 开发工具连接开发工具连接SQL Server 2008,实现,实现数据的查询数据的查询数据的插入数据的插入 数据的修改数据的修改 数据的删除数据的删除lADO.NET是微软新一代是微软新一代.NET数据库访问架构,一种具有数

2、据库访问架构,一种具有可扩展性的数据存取模型。可扩展性的数据存取模型。l在在ADO.NET中,大量复杂的数据操作代码被封装起来,中,大量复杂的数据操作代码被封装起来, 提供了一个统一的编程模式和一组公用的类来进行任何类提供了一个统一的编程模式和一组公用的类来进行任何类型的数据访问,而与具体开发语言无关。型的数据访问,而与具体开发语言无关。l介于数据源和数据使用者之间的桥梁。开发人员只需编写介于数据源和数据使用者之间的桥梁。开发人员只需编写少量代码即可轻易地实现数据库操作。少量代码即可轻易地实现数据库操作。4使用者使用者ADO.NET数据库数据库5.NET 数据提供程序数据提供程序Connect

3、ionTransactionCommandParametersDataReaderDataAdapterSelectCommandInsertCommandUpdateCommandDeleteCommandDataSetDataTableCollectionDataTableDataRowCollectionDataColumnCollectionConstraintCollectionDataRelationCollectionl.NET Data Provider访问数据源的一组类库,为访问数据源的一组类库,为统一对于各类型数据源的访问方式而设计。可用统一对于各类型数据源的访问方式而设计

4、。可用来连接数据库,执行命令和获取结果。来连接数据库,执行命令和获取结果。l可直接处理结果,或放在可直接处理结果,或放在DataSet中。中。l5种种.NET 数据提供程序数据提供程序l用于用于SQL Server的数据提供程序的数据提供程序l用于用于OLEDB的数据提供程序的数据提供程序l用于用于ODBC的数据提供程序的数据提供程序l用于用于Oracle的数据提供程序的数据提供程序lEntityClient数据提供程序数据提供程序6SqlClient VS OleDbl用于用于 SQL Server的数据提供程序的数据提供程序 :使用自己的协议与:使用自己的协议与 SQL Server进行通

5、信。轻量且性能良好,直接访问进行通信。轻量且性能良好,直接访问SQL Server,无需添加,无需添加 OLE DB 或或 ODBC层。层。 l用于用于 OLE DB的数据提供程序的数据提供程序:通过:通过 OLE DB服务组件服务组件(提供连接池和事务服务)和用于数据源的(提供连接池和事务服务)和用于数据源的 OLE DB 访访问接口与问接口与 OLE DB 数据源进行通信。数据源进行通信。 1. .NET Data Provider8对象名称功能说明Connection提供和数据源的连接功能。Command访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。 Dat

6、aAdapterDataSet对象和数据源间的桥梁。使用4个Command对象来运行查询、新建、修改、删除的SQL命令,把数据加载到DataSet,或者把DataSet内的数据送回数据源。DataReader通过Command对象运行SQL查询命令取得数据流,以便进行高速、只读的数据浏览。9ADO .NET离线数据访问模型的核心,在内存中暂离线数据访问模型的核心,在内存中暂存并处理各种从数据源中所取回的数据。存并处理各种从数据源中所取回的数据。一个一个存放在内存中的数据暂存区存放在内存中的数据暂存区,这些数据须通,这些数据须通过过DataAdapter对象与数据库进行数据交换。对象与数据库进行

7、数据交换。可包括多个可包括多个DataTable对象,而对象,而DataTable包含列和包含列和行,就象一个普通的数据库中的表。甚至能够定义行,就象一个普通的数据库中的表。甚至能够定义表之间的关系来创建主从关系(表之间的关系来创建主从关系(parent-child relationships)。)。趣味理解趣味理解ADO.NETl用用Connetction、Command和和DataReader对象,但只能读取数据对象,但只能读取数据库,不能修改数据。库,不能修改数据。 l用用Connection、Command、DataAdapter和和DataSet对象,更灵活,可对数对象,更灵活,可对

8、数据库进行各种操作。据库进行各种操作。 11使用使用 DataSet 可执行以下操作:可执行以下操作: l在应用程序中将数据缓存在本地,以便对数据进在应用程序中将数据缓存在本地,以便对数据进行处理。如果只需读取查询结果,则行处理。如果只需读取查询结果,则 DataReader 是更好的选择。是更好的选择。 l在层间或从在层间或从 XML Web services 对数据进行远程对数据进行远程处理。处理。l与数据进行动态交互,例如绑定到与数据进行动态交互,例如绑定到 Windows 窗体窗体控件或组合并关联来自多个源的数据。控件或组合并关联来自多个源的数据。l对数据执行大量的处理,而不需要与数据

9、源保持对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使打开的连接,从而将该连接释放给其他客户端使用。用。(1)建立)建立Connection对象,创建一个数据库连接。对象,创建一个数据库连接。(2)使用)使用Command对象对数据库发送查询、新增、修改和删对象对数据库发送查询、新增、修改和删除等命令。除等命令。(3)创建)创建DataAdapter对象,从数据库中取得数据。对象,从数据库中取得数据。(4)创建)创建DataSet对象,将对象,将DataAdapter对象填充到对象填充到DataSet对对象(数据集)中。象(数据集)中。(5)如果需要,可以重

10、复操作,一个)如果需要,可以重复操作,一个DataSet对象可以容纳多对象可以容纳多个数据集合。个数据集合。(6)关闭数据库。)关闭数据库。(7)在)在DataSet上进行所需操作。数据集的数据输出到窗体中上进行所需操作。数据集的数据输出到窗体中或者网页上面,需要设定数据显示控件的数据源为数据集。或者网页上面,需要设定数据显示控件的数据源为数据集。131415SqlConnection类属性说明ConnectionString获取或设置用于打开数据库的字符串。ConnectionTimeout获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。Database获取当前数据库或连接打开后要使

11、用的数据库的名称。DataSource获取数据源的服务器名或文件名。Provider获取在连接字符串的“Provider=”子句中指定的SQL提供程序的名称。State获取连接的当前状态。SqlConnection类方法说明Open使用 ConnectionString 所指定的属性设置打开数据库连接。Close关闭与数据库的连接。这是关闭任何打开连接的首选方法。CreateCommand创建并返回一个与 SqlConnection 关联的SqlCommand 对象。ChangeDatabase为打开的SqlConnection 更改当前数据库。2. 建立连接字符串建立连接字符串Connect

12、ionString方法方法:创建:创建SqlConnection对象,设置对象,设置ConnectionString属性。属性。1)混合模式连接)混合模式连接须提供登录名和登陆口令。须提供登录名和登陆口令。string mycon = server=(local);database=students;uid=cumt;pwd=cumt;2)windows模式连接模式连接string myconn=server=(local);database=students; Integrated Security=true;16连接连接ACCESSstring mycon = “provider=Micr

13、osfot.Jet.OLEDB.4.0;Data Source=“+Server.MapPath(“App_Code/Text.mdb;lData Source(或(或Server或或Address):待连接的):待连接的SQL Server实例的名称或网络地址。实例的名称或网络地址。lInitial Catalog(或(或Database):数据库的名称。):数据库的名称。lIntegrated Security(或(或Trusted_Connection):为):为False(默认)时,将在连接中指定用户(默认)时,将在连接中指定用户ID和密码。为和密码。为True时,时,使用当前使用当前

14、Windows帐户进行身份验证。可识别帐户进行身份验证。可识别True、False、yes、no以及与以及与True 等效的等效的SSPI(强烈推荐)。(强烈推荐)。lUser ID:SQL Server登录帐户。登录帐户。lPassword(或(或Pwd):):SQL Server帐户登录的密码。帐户登录的密码。17设计步骤:设计步骤:(1)添加一个名称为)添加一个名称为WebForm14-1的空网页。的空网页。(2)设计界面如下图所示,其中包含一个)设计界面如下图所示,其中包含一个Button控件控件Button1和一个标签和一个标签Label1。18protected void Butt

15、on1_Click(object sender, EventArgs e) string mystr; SqlConnection myconn = new SqlConnection(); mystr = Data Source=localhost;Initial Catalog=student; + Integrated Security=False;User Id=sa; Password=123456; myconn.ConnectionString = mystr; myconn.Open(); if (myconn.State = ConnectionState.Open) Lab

16、el1.Text = 成功连接到成功连接到SQL Server数据库数据库(lzw); else Label1.Text = 不能连接到不能连接到SQL Server数据库数据库(lzw); myconn.Close(); 19多在多在Web.config中保存连接字符串,再通过对文件加密,中保存连接字符串,再通过对文件加密,从而达到保护连接字符串的目的。从而达到保护连接字符串的目的。例例14.2,在,在节中插入以下代码:节中插入以下代码:20string mystr =ConfigurationManager.ConnectionStringsmyconn.ToString();SqlCon

17、nection myconn = new SqlConnection();myconn.ConnectionString = mystr;myconn.Open();也可在也可在Web.config文件的文件的节中插入代码:节中插入代码:21string mystr = ConfigurationManager.AppSettings;SqlConnection conn = new SqlConnection();conn.ConnectionString = mystr;conn.Open();l建立连接后,即可执行操作。一般对数据库的操作被概括建立连接后,即可执行操作。一般对数据库的操作

18、被概括为为CRUDCreate、Read、Update和和Delete。l1. SqlCommand 类的属性和方法类的属性和方法22SqlCommand 类属性说明CommandText获取/设置要对数据源执行的 T-SQL 语句或存储过程。CommandTimeout获取/设置在终止执行命令的尝试并生成错误前的等待时间。CommandType获取或设置一个值,指示如何解释CommandText属性。Connection数据命令对象所使用的连接对象Parameters参数集合(SqlParameterCollection)2. SqlCommand 的构造函数的构造函数23SqlComman

19、d 类方法说明CreateParameter 创建SqlParameter对象的新实例。 ExecuteNonQuery 针对Connection 执行SQL语句并返回受影响的行数。 ExecuteReader 将CommandText发送到Connection并生成一个SqlDataReader。 ExecuteScalar 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。 SqlCommand() 初始化 SqlCommand 类的新实例。SqlCommand(String) 用查询文本初始化 SqlCommand 类的新实例。SqlCommand(String, Sq

20、lConnection) 初始化具有查询文本和 SqlConnection 的 SqlCommand 类的新实例。SqlCommand(String, SqlConnection, SqlTransaction) 使用查询文本、一个 SqlConnection 以及 SqlTransaction 来初始化 SqlCommand 类的新实例。 string mystr = ConfigurationManager.ConnectionStringsmyconn.ToString();SqlConnection conn = new SqlConnection(mystr);SqlCommand

21、cmd = new SqlCommand();cmd.CommandType = CommandType.Text;cmd.CommandText = select name,birthday from stud_info;cmd.Connection = conn;conn.Open();24 protected void Page_Load(object sender, EventArgs e) string connStr= ConfigurationManager.ConnectionStringsmyconn.ToString(); SqlConnection conn = new

22、SqlConnection(connStr); string commStr=select * from stud_info; SqlCommand cmd = new SqlCommand(commStr, conn); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); this.GridView1.DataSource = dr; this.GridView1.DataBind(); dr.Close(); conn.Close(); 2526在在SqlCommand 的方法中,的方法中,ExecuteScalar方法执行返回方法执行

23、返回单个值的单个值的SQL命令。命令。例例14.4,如果想获取,如果想获取Student数据表中学生的总人数,则数据表中学生的总人数,则可以使用这个方法执行可以使用这个方法执行SQL查询:查询:SELECT Count(*) FROM student设计步骤:设计步骤:(1)添加一个名称为)添加一个名称为WebForm14-5的空网页。的空网页。(2)包含一个)包含一个HTML标签、一个文本框标签、一个文本框TextBox1和一个和一个Button控件控件Button1,将该网页的,将该网页的StyleSheetTheme属性设属性设置为置为Blue。 27protected void But

24、ton1_Click(object sender, EventArgs e)SqlConnection conn = new SqlConnection(); SqlCommand cmd = new SqlCommand(); conn.ConnectionString = ConfigurationManager.ConnectionStringsmycons.ToString(); conn.Open(); string mysql = SELECT AVG(grade) FROM stud_grade; cmd.CommandText = mysql; cmd.Connection =

25、 conn; TextBox1.Text = cmd.ExecuteScalar().ToString(); conn.Close();28单击工具栏中的单击工具栏中的按钮运行本网页,再单击按钮运行本网页,再单击“求平均分求平均分”命令按钮,其运行结果如下图所示,表示所有学生平均分命令按钮,其运行结果如下图所示,表示所有学生平均分为为78。29在在SqlCommand 的方法中,的方法中,ExecuteNonQuery方法执行方法执行不返回结果的不返回结果的SQL命令。命令。该方法主要用来更新数据,常用它来执行该方法主要用来更新数据,常用它来执行UPDATE、INSERT和和DELETE语句。

26、语句。该方法不返回行,对于该方法不返回行,对于UPDATE、INSERT和和DELETE语句,返回值为该命令所影响的行数。语句,返回值为该命令所影响的行数。30public partial class WebForm12_6: System.Web.UI.PageSqlCommand mycmd = new SqlCommand(); SqlConnection myconn = new SqlConnection();protected void Page_Load(object sender, EventArgs e)string mystr=ConfigurationManager.Co

27、nnectionStringsmycons.ToString();myconn.ConnectionString = mystr;myconn.Open();protected void Page_Unload()myconn.Close();/关闭本网页时关闭连接关闭本网页时关闭连接31protected void Button1_Click(object sender, EventArgs e)string mysql;mysql = UPDATE stud_grade SET grade= grade +5;mycmd.CommandText = mysql;mycmd.Connecti

28、on = myconn;mycmd.ExecuteNonQuery();protected void Button2_Click(object sender, EventArgs e)string mysql;mysql = UPDATE stud_grade SET grade= grade -5;mycmd.CommandText = mysql;mycmd.Connection = myconn;mycmd.ExecuteNonQuery();32单击工具栏中的单击工具栏中的按钮运行本网页,单击按钮运行本网页,单击“分数分数+5”命命令按钮,此时令按钮,此时score表中所有分数都增加表

29、中所有分数都增加5分,为了保存分,为了保存score表不变,再单击表不变,再单击“分数分数-5”命令按钮,此时命令按钮,此时score表中表中所有分数都恢复成原来的数据,其运行界面如下图所示。所有分数都恢复成原来的数据,其运行界面如下图所示。3334主要流程主要流程:(1)创建)创建Connection对象,并设置相应的属性值。对象,并设置相应的属性值。(2)打开)打开Connection对象。对象。(3)创建)创建Command对象并设置相应的属性值,其中对象并设置相应的属性值,其中SQL语句含有占位符。语句含有占位符。(4)创建参数对象,将建立好的参数对象添加到)创建参数对象,将建立好的参

30、数对象添加到Command对象的对象的Parameters集合中。集合中。(5)为参数对象赋值。)为参数对象赋值。(6)执行数据命令。)执行数据命令。(7)关闭相关对象。)关闭相关对象。35 例例14.7,更新语句:,更新语句:UPDATE lesson_info SET course_name= Name WHERE course_id= CID该命令是将指定该命令是将指定course_id的课程记录的的课程记录的course_name替换成替换成指定的值。其中指定的值。其中CID和和Name均为参数,在执行该语句之前均为参数,在执行该语句之前需要为参数赋值。需要为参数赋值。可用以下命令向可

31、用以下命令向Parameters参数集合中添加参数值:参数集合中添加参数值:mycmd.Parameters.Add(Name,SqlType.VarChar,10).Value = Name1;mycmd.Parameters.Add(CID, SqlType.VarChar,5).Value = ID1;36设计界面如下图所示,其中包含两个设计界面如下图所示,其中包含两个HTML标签、两个文本框标签、两个文本框(TextBox1和和TextBox2)和一个)和一个Button控件控件Button1,将该网页,将该网页的的StyleSheetTheme属性设置为属性设置为Blue。 网页设计

32、界面网页设计界面37protected void Button1_Click(object sender, EventArgs e)SqlConnection myconn = new SqlConnection();SqlCommand mycmd = new SqlCommand();myconn.ConnectionString = ConfigurationManager.ConnectionStringsmycons.ToString();myconn.Open(); string mysql = SELECT AVG(grade) FROM stud_grade WHERE stu

33、d_id=no;mycmd.CommandText = mysql;mycmd.Connection = myconn;mycmd.Parameters.Add(no, SqlDbType.VarChar, 10).Value = TextBox1.Text;TextBox2.Text = mycmd.ExecuteScalar().ToString();myconn.Close();38网页运行界面网页运行界面上述代码先建立连接,然后通过上述代码先建立连接,然后通过ExecuteScalar方法执行方法执行SQL命令,通过命令,通过“no”替换返回指定学号的平均分。运行替换返回指定学号的平均

34、分。运行本网页,输入学号本网页,输入学号8,单击,单击“求平均分求平均分”命令按钮,运行界命令按钮,运行界面如下图所示。面如下图所示。39当执行返回结果集的命令时,需要一个方法从结果集当执行返回结果集的命令时,需要一个方法从结果集中提取数据。处理结果集的方法有两个:中提取数据。处理结果集的方法有两个:(1)使用)使用SqlDataReader对象(数据阅读器);对象(数据阅读器);(2)使用)使用SqlDataAdapter对象(数据适配器)和对象(数据适配器)和DataSet对象。对象。40属性说明FieldCount获取当前行中的列数IsClosed获取一个布尔值,指出SqlDataRea

35、der对象是否关闭RecordsAffected获取执行SQL语句时修改的行数方法说明Read将SqlDataReader对象前进到下一行并读取,返回布尔值指示是否有多行Close关闭SqlDataReader对象IsDBNull返回布尔值,表示列是否包含NULL值NextResult将SqlDataReader对象移到下一个结果集,返回布尔值指示该结果集是否有多行GetBoolean返回指定列的值,类型为布尔值GetString返回指定列的值,类型为字符串GetByte返回指定列的值,类型为字节GetInt32返回指定列的值,类型为整型值GetDouble返回指定列的值,类型为双精度值Get

36、DataTime返回指定列的值,类型为日期时间值GetOrdinal返回指定列的序号或数字位置(首列序号为0)GetBoolean返回指定列的值,类型为对象41 SqlDataReader对象,用于从数据源中读取只读的数据集,对象,用于从数据源中读取只读的数据集,常用语检索大量数据。常用语检索大量数据。 SqlDataReader类没有公有的构造函数。常用类没有公有的构造函数。常用Command类类的的ExecuteReader方法,返回一个方法,返回一个DataReader对象。对象。 例,以下代码创建一个例,以下代码创建一个SqlDataReader对象对象myreader:SqlComm

37、and cmd = new SqlCommand (CommandText,ConneObject);SqlDataReader myreader = cmd.ExecuteReader();注注:SqlDataReader对象不能使用对象不能使用new来创建。来创建。42当当ExecuteReader方法返回方法返回DataReader对象时,当前光标位对象时,当前光标位置在置在第一条记录前面第一条记录前面。须调用。须调用Read方法把光标移动到第一条记方法把光标移动到第一条记录,然后,第一条记录将变成当前记录。录,然后,第一条记录将变成当前记录。如果记录不止一条,如果记录不止一条,Read

38、方法就返回一个方法就返回一个Boolean值值true。想要移动到下一条记录,需再次调用想要移动到下一条记录,需再次调用Read方法。重复上述过程,方法。重复上述过程,直到最后一条记录,此时直到最后一条记录,此时Read方法将返回方法将返回false。常用。常用While循环循环来遍历记录:来遍历记录:while (myreader.Read()/读取数据读取数据只要只要Read方法返回的值为方法返回的值为true,就可以访问当前记录中包含,就可以访问当前记录中包含的字段。的字段。43(1)Item属性属性返回一个代码字段属性的对象。返回一个代码字段属性的对象。Item属性是属性是DataRe

39、ader对象的索引。注:对象的索引。注:Item属性总是基于属性总是基于0开始编号:开始编号:myreaderFieldName myreaderFieldIndex(2)Get方法方法每个每个DataReader对象都定义了一组对象都定义了一组Get方法,其将返回方法,其将返回适当类型的值。如,适当类型的值。如,GetInt32方法把返回的字段值作为方法把返回的字段值作为32位位整数,每个整数,每个Get方法都将接受字段的索引。方法都将接受字段的索引。 myreader.GetInt320myreader.GetString144设计步骤:设计步骤:(1)在)在Myaspnet网站添加一个名

40、称为网站添加一个名称为WebForm14-8的空的空网页。网页。(2)其设计界面如下图所示,其中包含一个列表框)其设计界面如下图所示,其中包含一个列表框ListBox1(Rows属性设为属性设为8)和一个)和一个Button控件控件Button1,将,将该网页的该网页的StyleSheetTheme属性设置为属性设置为Blue。 网页设计界面网页设计界面45protected void Button1_Click(object sender, EventArgs e)string mystr,mysql;SqlConnection myconn = new SqlConnection();Sq

41、lCommand mycmd = new SqlCommand();mystr =ConfigurationManager.ConnectionStringsmycons.ToString();myconn.ConnectionString = mystr;myconn.Open();mysql = SELECT * FROM stud_info;mycmd.CommandText = mysql;mycmd.Connection = myconn;SqlDataReader myreader = mycmd.ExecuteReader();ListBox1.Items.Add(学号学号 姓名

42、姓名 性别性别 民族民族 班号班号);ListBox1.Items.Add(=); while (myreader.Read()/循环读取信息循环读取信息ListBox1.Items.Add(String.Format(0 1 2 3 4,myreader0.ToString(), myreader1.ToString(), myreader2.ToString(), myreader3.ToString(),myreader4.ToString();myconn.Close();myreader.Close();46网页运行界面网页运行界面单击工具栏中的单击工具栏中的按钮运行本网页,单击按钮

43、运行本网页,单击“输出所有学输出所有学生生”命令按钮,运行界面如下图所示。命令按钮,运行界面如下图所示。47表示一组表示一组 SQL 命令和一个数据库连接,它们用于填充命令和一个数据库连接,它们用于填充 DataSet 和更新数据源。和更新数据源。SqlDataAdapter对象(数据适配器)可执行对象(数据适配器)可执行SQL命令以及命令以及调用存储过程、传递参数,最重要的是取得数据结果集,在调用存储过程、传递参数,最重要的是取得数据结果集,在数据库和数据库和DataSet对象之间来回传输数据。对象之间来回传输数据。数据库数据库DataSet对象对象SqlDataAdapter对象对象48属

44、性说明SelectCommand获取或设置SQL语句用于选择数据源中的记录。该值为SqlCommand 对象InsertCommand获取或设置SQL语句用于将新记录插入到数据源中。该值为SqlCommand 对象UpdateCommand获取或设置SQL语句用于更新数据源中的记录。该值为SqlCommand 对象DeleteCommand获取或设置SQL语句用于从数据集中删除记录。该值为SqlCommand 对象AcceptChangesDuringFill获取或设置一个值,该值指示在任何Fill操作过程中时,是否接受对行所做的修改AcceptChangesDuringUpdate获取或设置

45、在Update期间是否调用AcceptChangesFillLoadOption获取或设置LoadOption,后者确定适配器如何从SqlDataReader中填充DataTableMissingMappingAction确定传入数据没有匹配的表或列时需要执行的操作MissingSchemaAction确定现有DataSet架构与传入数据不匹配时需要执行的操作TableMappings获取一个集合,它提供源表和DataTable之间的主映射49方法说明Fill用来执行SqlDataAdapter对象的SelectCommand属性中相对应的SQL语句,以检索数据库中的数据,然后更新数据集中的D

46、ataTable对象,如果DataTable对象不存在,则创建它FillSchema将DataTable添加到DataSet中,并配置架构以匹配数据源中的架构GetFillParameters获取当执行SQL SELECT语句时由用户设置的参数Update用来自动执行UpdateCommand、InsertCommand或DeleteCommand属性相对应的SQL语句,以使数据集中的数据来更新数据库。50SqlDataAdapter类有以下构造函数:类有以下构造函数:SqlDataAdapter();SqlDataAdapter(selectCommand);SqlDataAdapter(s

47、electCommandText,selectConnection);SqlDataAdapter(selectCommandText,selectConnectionString);例:例:string mystr,mysql;SqlConnection myconn = new SqlConnection();mystr = Data Source=localhost;Initial Catalog=Stud; + Integrated Security=False;User Id=sa;Password=123456;myconn.ConnectionString = mystr;myc

48、onn.Open();mysql = SELECT * FROM student;SqlDataAdapter myadapter = new SqlDataAdapter(mysql,myconn);myconn.Close();51Fill方法用于向方法用于向DataSet对象填充从数据源中读取的数,对象填充从数据源中读取的数,语法格式有多种,常见格式如下:语法格式有多种,常见格式如下:SqlDataAdapter对象名对象名.Fill(DataSet对象名,对象名,表名表名);其中,第一参数是数据集对象名,表示要填充的数据集其中,第一参数是数据集对象名,表示要填充的数据集对象;第二参数是

49、字符串,表示在本地缓冲区中建立的临时对象;第二参数是字符串,表示在本地缓冲区中建立的临时表的名称。表的名称。如,以下语句用如,以下语句用course表数据填充数据集表数据填充数据集mydataset1:SqlDataAdapter1.Fill(mydataset1,course);52Update方法用于将数据集方法用于将数据集DataSet对象中的数据按对象中的数据按InsertCommand属性、属性、DeleteCommand属性和属性和UpdateCommand属性所指定的要求更新数据源,即调用属性所指定的要求更新数据源,即调用3个属性中所定义的个属性中所定义的SQL语句来更新数据源。

50、语句来更新数据源。Update方法常见调用格式如下。方法常见调用格式如下。SqlDataAdapter对象名对象名.Update(DataSet对象名对象名,数据表名数据表名);其中第一个参数是数据集对象名,表示要将哪个数据集对象其中第一个参数是数据集对象名,表示要将哪个数据集对象中的数据更新到数据源中;第二个参数是一个字符串,表示临时中的数据更新到数据源中;第二个参数是一个字符串,表示临时表的名称。表的名称。53DataSet是是ADO.NET数据库访问组件的核心,主要是用数据库访问组件的核心,主要是用来支持来支持ADO.NET的不连贯连接及数据分布。的不连贯连接及数据分布。数据驻留内存,保

51、证和数据源无关的一致性的关系模型,数据驻留内存,保证和数据源无关的一致性的关系模型,并用于多个异种数据源的数据操作。并用于多个异种数据源的数据操作。14.4.1 DataSet对象概述对象概述54创建创建DataSet对象有多种方法,既可用设计工具,也可用对象有多种方法,既可用设计工具,也可用程序代码来创建。用代码创建程序代码来创建。用代码创建DataSet对象的语法如下:对象的语法如下:DataSet 对象名对象名 = new DataSet();或或DataSet 对象名对象名 = new DataSet(dataSetName);其中,其中,dataSetName为一个字符串,指出为一个

52、字符串,指出DataSet的名称。的名称。55DataTable对象对象属性说明CaseSensitive获取或设置一个值,该值指示DataTable对象中的字符串比较是否区分大小写DataSetName获取或设置当前DataSet的名称Relations获取用于将表链接起来并允许从父表浏览到子表的关系的集合Tables获取包含在DataSet中的表的集合Tables:DataTable集合集合DataTable对象对象Columns:DataColumn集合集合Rows:DataRow集合集合DataTable对象对象DataColumn对象对象DataTable对象对象DataRow对象对

53、象DataSet56DataSet对象的方法说明AcceptChanges提交自加载此DataSet或上次调用AcceptChanges以来对其进行的所有更改Clear通过移除所有表中的所有行来清除任何数据的DataSetCreateDataReader为每个DataTable返回带有一个结果集的DataTableReader,顺序与Tables集合中表的显示顺序相同GetChanges获取DataSet的副本,该副本包含自上次加载以来或自调用AcceptChanges以来对该数据集进行的所有更改HasChanges获取一个值,该值指示DataSet是否有更改,包括新增行、已删除的行或已修改的

54、行Merge将指定的DataSet、DataTable或DataRow对象的数组合并到当前的DataSet或DataTable中Reset将DataSet重置为初始状态57DataSet对象的对象的Tables属性由表组成,每个表是一个属性由表组成,每个表是一个DataTable对象。实际上,每一个对象。实际上,每一个DataTable对象代表了数据对象代表了数据库中的一个表,每个库中的一个表,每个DataTable数据表都由相应的行和列组成。数据表都由相应的行和列组成。可通过索引来引用可通过索引来引用Tables集合中的一个表,例如,集合中的一个表,例如,Tablesi表示第表示第i个表,其

55、索引值从个表,其索引值从0开始编号。开始编号。58Tables集合的属性说明CountTables集合中表个数Item检索Tables集合中指定索引处的表Tables集合的方法说明Add向Tables集合中添加一个表AddRange向Tables集合中添加一个表的数组Clear移除Tables集合中的所有表Contains确定指定表是否在Tables集合中Equqls判断是否等于当前对象GetType获取当前实例的TypeInsert将一个表插入到Tables集合中指定的索引处IndexOf检索指定的表在Tables集合中的索引Remove从Tables集合中移除指定的表RemoveAt移除T

56、ables集合中指定索引处的表59一个一个DataTable对象包含一个对象包含一个Columns属性即列集合和一个属性即列集合和一个Rows属性即行集合。属性即行集合。 属性说明CaseSensitive指示表中的字符串比较是否区分大小写ChildRelations获取此DataTable的子关系的集合Columns获取属于该表的列的集合Constraints获取由该表维护的约束的集合DataSet获取此表所属的DataSetDefaultView返回可用于排序、筛选和搜索DataTable的DataViewExtendedProperties获取自定义用户信息的集合ParentRelati

57、ons获取该DataTable的父关系的集合PrimaryKey获取或设置充当数据表主键的列的数组Rows获取属于该表的行的集合TableName获取或设置DataTable的名称60方法说明AcceptChanges提交自上次调用AcceptChanges以来对该表进行的所有更改Clear清除所有数据的DataTableCompute计算用来传递筛选条件的当前行上的给定表达式CreateDataReader返回与此DataTable中的数据相对应的DataTableReaderImportRow将DataRow复制到DataTable中,保留任何属性设置以及初始值和当前值Merge将指定的D

58、ataTable与当前的DataTable合并NewRow创建与该表具有相同架构的新DataRowSelect获取DataRow对象的数组61(1)利用数据适配器的)利用数据适配器的Fill方法自动建立方法自动建立DataTable对象对象先通过先通过SqlDataAdapter对象从数据源中提取数据,然后调用对象从数据源中提取数据,然后调用Fill方法,将提取记录存入方法,将提取记录存入DataSet中对应的表内,如中对应的表内,如DataSet中中不存在对应的表,会先建立表再将记录填入。以下语句向不存在对应的表,会先建立表再将记录填入。以下语句向DataSet对象对象myds中添加一个表中添加一个表course及其包含的数据记录:及其包含的数据记录:DataSet myds = new DataSet();SqlDataAdapter myda = new SqlDataAdapter(SELECT * From course,myconn);myda.Fill(myds, course);62(2)将建立的)将建立的DataTable对象添加到对象添加到DataSet中中先建立先建立DataTable对象,然后调用对象,然后调用DataSet的表集合属性的表集合属性Tables的的Add方法,将方法,将DataTable对象添加到对象添加到DataSe

温馨提示

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

评论

0/150

提交评论