asp.net3.5从学习入门到精通9-12.doc

上传人:小** 文档编号:575943 上传时间:2018-10-31 格式:DOC 页数:100 大小:2.87MB
返回 下载 相关 举报
asp.net3.5从学习入门到精通9-12.doc_第1页
第1页 / 共100页
asp.net3.5从学习入门到精通9-12.doc_第2页
第2页 / 共100页
点击查看更多>>
资源描述

《asp.net3.5从学习入门到精通9-12.doc》由会员分享,可在线阅读,更多相关《asp.net3.5从学习入门到精通9-12.doc(100页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、|第 9 章 ASP.NET 操作数据库通过对 ADO.NET 的基本讲解,以及讲解了一些数据源控件的基本用法后,本章将介绍一些ASP.NET 操作数据库的高级用法,包括使用 SQLHelper,以及数据源控件对数据的操作。本章是对前面的数据库知识的一种补充和提升。9.1 使用 ADO.NET 操作数据库上一章中介绍了 ADO.NET 的基本概念、ADO.NET 的对象,以及如何使用 ADO.NET。使用ADO.NET 能够极大的方便开发人员对数据库进行操作而无需关心数据库底层之间的运行,ADO.NET不仅包括多个对象,同样包括多种方法,这些方法都可以用来执行开发人员指定的 SQL 语句,但是

2、这些方法实现过程又不尽相同,本节将介绍 ADO.NET 中数据的操作方法。9.1.1 使用 ExecuteReader()操作数据库使用 ExecuteReader()操作数据库,ExecuteReader()方法返回的是一个 SqlDataReader 对象或OleDbDataReader 对象。当使用 DataReader 对象时,不会像 DataSet 那样提供无连接的数据库副本,DataReader 类被设计为产生只读、只进的数据流。这些数据流都是从数据库返回的。所以,每次的访问或操作只有一个记录保存在服务器的内存中。相比与 DataSet 而言,DataReader 具有较快的访问能

3、力,并且能够使用较少的服务器资源。DataReader 对象提供了“游标”形式的读取方法,当从结果中读取了一行,则“游标”会继续读取到下一行。通过 Read 方法可以判断数据是否还有下一行,如果存在数据,则继续运行并返回 true,否则返回 false。示例代码如下所示。string str = “server=(local);database=mytable;uid=sa;pwd=sa“;SqlConnection con = new SqlConnection(str);con.Open(); /打开连接string strsql = “select * from mynews“; /SQ

4、L 查询语句SqlCommand cmd = new SqlCommand(strsql, con); /初始化 Command 对象SqlDataReader rd = cmd.ExecuteReader(); /初始化 DataReader 对象while (rd.Read()Response.Write(rd“title“.ToString(); /通过索引获取列DataReader 可以提高执行效率,有两种方式可以提高代码的性能,一种是基于序号的查询;第二种情况则是使用适当的 Get 方法来查询。一般来说,在数据库的设计中,需要设计索引键或主键来标识,在主键的设计中,自动增长类型是经常

5、使用的,自动增长类型通常为整型,所以基于序号的查询可以使用 DataReader,示例代码如下所示。string str = “server=(local);database=mytable;uid=sa;pwd=sa“; /设置连接字串SqlConnection con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接244string strsql = “select * from mynews where id=1 order by id desc“; /按标识查询SqlCommand cmd = new SqlCommand(strs

6、ql, con); /创建 Command 对象SqlDataReader rd = cmd.ExecuteReader(); /创建 DataReader 对象while (rd.Read() /遍历数据库Response.Write(rd“title“.ToString(); /读取相应行的信息当使用 ExecuteReader()操作数据库时,会遇到知道某列的名称而不知道某列的号的情况,这种情况可以通过使用 DataReader 对象的 GetOrdinal()方法获取相应的列号。此方法接收一个列名并返回此列名所在的列号,示例代码如下所示。string str = “server=(lo

7、cal);database=mytable;uid=sa;pwd=sa“; /创建连接字串SqlConnection con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接string strsql = “select * from mynews where id=1 order by id desc“; /创建执行 SQL 语句SqlCommand cmd = new SqlCommand(strsql, con); /创建 Command 对象SqlDataReader rd = cmd.ExecuteReader(); /创建 Dat

8、aReader 对象int id = rd.GetOrdinal(“title“); /使用 GetOrdinal 方法获取 title 列的列号while (rd.Read() /遍历 DataReader 对象Label1.Text = “新闻 id 是“ + rd“id“; /输出对象的值当完成数据库操作时,需要关闭数据库连接,DataReader 对象在调用 Close()方法即关闭与数据库的连接,如果在没有关闭之前又打开另一个连接,系统会抛出异常。示例代码如下所示。rd.Close(); /关闭 DataReader 对象ExecuteReader()可以执行相应的 SQL 语句,例

9、如插入、更新以及删除等,当需要执行插入、更新或删除时,可以使用 ExecuteReader()进行数据操作,示例代码如下所示。string str = “server=(local);database=mytable;uid=sa;pwd=sa“; /创建连接字串SqlConnection con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接string strsql = “insert into mynews values (执行更新后的标题 )“; /创建执行 SQL 语句SqlCommand cmd = new SqlCommand

10、(strsql, con); /创建 Command 对象SqlDataReader rd = cmd.ExecuteReader(); /使用 ExcuteReader()方法while (rd.Read() /读取数据库Response.Write(rd“title“.ToString() + “);rd.Close(); /关闭 DataReader 对象Response.Redirect(“ExecuteReader.aspx“);当执行了插入、删除等数据库操作时,ExecuteReader 返回为空的 DataReader 对象。当使用 Read方法遍历读取数据库时,并不会显示相应的

11、数据信息,因为不是查询语句,则返回一个没有任何数据的 System.Data.OleDb.OleDbDataReader 类型的集(EOF),但是 ExecuteReader 方法可以执行 SQL 语句。如图 9-1 所示。245图 9-1 ExecuteReader()执行查询和事务处理使用 ExecuteReader()操作数据库,通常情况下是使用 ExecuteReader()进行数据库查询操作,使用ExecuteReader()查询数据库能够提升查询效率,而如果需要进行数据库事务处理的话,ExecuteReader()方法并不是理想的选择。9.1.2 使用 ExecuteNonQuer

12、y()操作数据库使用 ExecuteNonQuery()操作数据库时, ExecuteNonQuery()并不返回 DataReader 对象,返回的是一个整型的值,代表执行某个 SQL 语句后,在数据库中影响的行数,示例代码如下所示。string str = “server=(local);database=mytable;uid=sa;pwd=sa“; /创建连接字串SqlConnection con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接string strsql = “select top 5 * from mynews o

13、rder by id desc“;SqlCommand cmd = new SqlCommand(strsql, con); /使用 ExecuteNonQueryLabel1.Text=“该操作影响了“+cmd.ExecuteNonQuery()+“行“; /执行 SQL 语句并返回行上述代码使用了 SELECT 语句,并执行语句,返回受影响的行数。运行后,发现返回的结果为-1,说明,当使用 SELECT 语句时,并没有对任何行有任何影响。ExecuteNonQuery() 通常情况下为数据库事务处理的首选,当需要执行插入、删除、更新等操作时,首选 ExecuteNonQuery()。对于更

14、新、插入和删除的 SQL 句,ExecuteNonQuery() 方法的返回值为该命令所影响的行数。对于“CREATE TABLE”和“DROP TABLE”语句,返回值为 0,而对于所有其他类型的语句,返回值为-1。ExecuteNonQuery()操作数据时,可以不使用 DataSet 直接更改数据库中的数据,示例代码如下所示。protected void Button1_Click(object sender, EventArgs e)string str = “server=(local);database=mytable;uid=sa;pwd=sa“; /创建连接字串SqlConne

15、ction con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接string strsql = “delete from mynews where id4“; /编写执行删除的 SQL 语句SqlCommand cmd = new SqlCommand(strsql, con); /创建 Command 对象Label1.Text = “该操作影响了“ + cmd.ExecuteNonQuery() + “行“; /返回影响行数246运行上述代码后,会执行删除 id 号大于 4 的数据事务,当执行删除并删除完毕后,则ExecuteNonQ

16、uery()方法返回受影响的行数,如图 9-2 所示。图 9-2 ExecuteNonQuery()方法ExecuteNonQuery()操作主要进行数据库操作,包括更新、插入和删除等操作,并返回相应的行数。在进行数据库事务处理时或不需要 DataSet 为数据库进行更新时,ExecuteNonQuery()方法是数据操作的首选。因为 ExecuteNonQuery()支持多种数据库语句的执行。注意:有些项目中,通过判断 ExecuteNonQuery()的返回值来判断 SQL 语句是否执行成功,这样是有失偏颇的,因为当使用创建表的语句时,就算执行成功也会返回-1。9.1.3 使用 Execu

17、teScalar()操作数据库ExecuteScalar()方法也用来执行 SQL 语句,但是 ExecuteScalar()执行 SQL 语句后的返回值与ExecuteNonQuery()并不相同, ExecuteScalar()方法的返回值的数据类型是 Object 类型。如果执行的 SQL语句是一个查询语句(SELECT),则返回结果是查询后的第一行的第一列,如果执行的 SQL 语句不是一个查询语句,则会返回一个未实例化的对象,必须通过类型转换来显示,示例代码如下所示。string str = “server=(local);database=mytable;uid=sa;pwd=sa“

18、; /创建连接字串SqlConnection con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接string strsql = “select * from mynews order by id desc“;SqlCommand cmd = new SqlCommand(strsql, con);Label1.Text = “查询出了 Id 为“ + cmd.ExecuteScalar() ; /使用 ExecuteScalar 查询通常情况下 ExecuteNonQuery()操作后返回的是一个值,而 ExecuteScalar()操

19、作后则会返回一个对象,ExecuteScalar()经常使用于当需要返回单一值时的情况。例如当插入一条数据信息时,常常需要马上知道刚才插入的值,则可以使用 ExecuteScalar()方法。示例代码如下所示。string str = “server=(local);database=mytable;uid=sa;pwd=sa“; /创建连接字串SqlConnection con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接string strsql = “insert into mynews values (刚刚插入的 id 是多少?)

20、SELECT IDENTITY as bh“; /插入语句SqlCommand cmd = new SqlCommand(strsql, con); /执行语句Label1.Text = “刚刚插入的行的 id 是“ + cmd.ExecuteScalar(); /返回赋值上述代码使用了 SELECT IDENTITY 语法获取刚刚执行更新后的 id 值,然后通过使用ExecuteScalar()方法来获取刚刚更新后第一行第一列的值。2479.1.4 使用 ExecuteXmlReader()操作数据库ExecuteXmlReader()方法用于操作 XML 数据库,并返回一个 XmlRead

21、er 对象,若需要使用ExecuteXmlReader()方法,则必须添加引用 System.Xml。 XmlReader 类似于 DataReader,都需要通过Command 对象的 ExecuteXmlReader()方法来创建 XmlReader 的对象并初始化,示例代码如下所示。XmlReader xdr = cmd.ExecuteXmlReader(); /创建 XmlReader 对象ExecuteXmlReader()返回 XmlReader 对象,XmlReader 特性如下所示: XMLReader 是面向流的,它把 XML 文档看作是文本数据流。 XMLReader 是一

22、个抽象类。 XMLReader 使用 pull 模式处理流。 三个派生类:XMLTextReader、XMLNodeReader 和 XMLValidatingReader下面代码实现了获取当前节点中属性的个数。string str = “server=(local);database=mytable;uid=sa;pwd=sa“; /创建连接字串SqlConnection con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接string strsql = “select * from mynews order by id desc FO

23、R XML AUTO, XMLDATA“;SqlCommand cmd = new SqlCommand(strsql, con); /创建 Command 对象XmlReader xdr = cmd.ExecuteXmlReader(); /创建 XmlReader 对象Response.Write(xdr.AttributeCount); /读取节点个数上述代码使用了 SQL 语言中的 FOR XML AUTO,、XMLDATA 关键字,当执行ExecuteXmlReader()方法时,会返回 XmlReader 对象,若不指定 FOR XML AUTO,、XMLDATA 关键字,则系统会

24、抛出异常。9.2 ASP.NET 创建和插入记录在数据库操作中,经常需要对数据库中的内容进行插入操作。例如当有一个用户发布了评论,或者一个用户要购买某个商品,都需要插入记录来保存用户的相应的信息,以便当用户再次登录网站或应用时,能够及时获取自己购买的信息。9.2.1 SQL INSERT 数据插入语句使用 SQL INSERT 语句能够实现数据库的插入,SQL 语句必须遵照一些规范, SQL INSERT 语句的一般语法形式如下所示:INSERT INTOtable_name(column_list)VALUES(DEFAULT|NULL|expression ,n)上述代码规范了 INSER

25、T 语句的编写规范,其中: INSERT 是 SQL 插入关键字。248 INTO是表名称之前能够包含的可选关键字。 Table_name 是相关的表名称。 column_list 是列的集合,如果有多个列可用都好隔开。 VALUES 是相应的列的值。如果需要向表 mytables 插入数据,而 mytables 里包括自动增长的主键 id 和 title 两列,则 INSERT语句可以编写为如下代码。INSERT INTO mytables VALUES (新的新闻标题)上述代码向表 mytables 中插入了一条新记录,并将 title 赋值为“新的新闻标题”。值得注意的是,在这条语句中,

26、并没有编写列的集合,是因为当不编写 column_list 时,则默认为每一个列插入数值。注意:自动增长的主键类型的字段,无需向数据中插入数值,因为 SQL Server 会自动为该列赋值。如果需要当插入数据时,需要指定插入相应的列的值,则可以将 SQL 语句代码编写如下。INSERT INTO mytables (title) VALUES (新的新闻标题)上述代码指定了列 title,并对应了相应的值。若在表中存在多个列,列的顺序和列相应的值的顺序必须匹配。例如有 3 列并分别为 number1,string2,datetime3,当需要向其中插入数据时,则可以编写以下 SQL 语句。IN

27、SERT INTO examtable (number1,string2,datetime3) VALUES (1,this is a string,2008/9/18)上述代码编写了 INSERT 语句以便数据的插入,同样在插入语句中如果需要插入所有的列,可以简化 INSERT 语句以便快速进行数据插入,示例代码如下所示。INSERT INTO examtable VALUES (1,this is a string,2008/9/18)值得注意的是,无论按照何种方法编写 SQL 语句,值和列都应该相互匹配。9.2.2 使用 Command 对象更新记录编写了 SQL 语句后,必须执行 SQ

28、L 语句,在 ADO.NET 中,执行 SQL 语句有很多方法,其中推荐使用 Command 命令的 ExecuteNonQuery()。执行 SQL 语句的命令的必要步骤如下所示。 打开数据连接。 创建一个新的 Command 对象。 定义一个 SQL 命令。 执行 SQL 命令。 关闭连接。从上面的步骤可以发现执行 SQL 语句是非常容易的,首先必须要打开到数据库的连接,示例代码如下所示。string str = “server=(local);database=mytable;uid=sa;pwd=sa“;SqlConnection con = new SqlConnection(str

29、); /创建连接对象con.Open(); /打开连接其中,str 是数据连接字串,用来初始化 Connection 对象,说明如何连接数据库,当数据库连接完毕后,可以使用 Open 方法打开数据连接。完成数据库连接后,需创建一个新的 Command 对象,示例代码如下所示。SqlCommand cmd = new SqlCommand(“insert into mynews value (插入一条新数据)“, con);Command 对象的构造函数的参数有两个,一个是需要执行的 SQL 语句,令一个是数据库连接对象。创建 Command 对象后,就可以执行 SQL 命令,执行后完成并关闭数

30、据连接,示例代码如下所示。cmd.ExecuteNonQuery(); /执行 SQL 命令249con.Close(); /关闭连接上述代码使用了 ExecuteNonQuery()方法执行了 SELECT 语句的操作,当执行完毕后就需要对现有的连接进行关闭,以释放系统资源。9.2.3 使用 DataSet 数据集插入记录使用 INSERT 语句能够完成数据插入,使用 DataSet 对象也可以完成数据插入。为了将数据库的数据填充到 DataSet 中,则必须先使用 DataAdapter 对象的方法实现填充,当数据填充完成后,开发人员可以将记录添加到 DataSet 对象中,然后使用 Up

31、date 方法将记录插入数据库中。使用 DataSet 更新记录的步骤如下所示: 创建一个 Connection 对象。 创建一个 DataAdapter 对象。 初始化适配器。 使用数据适配器的 Fill 方法执行 SELECT 命令,并填充 DataSet。 使用 DataTable 对象提供的 NewRow 方法创建新行。 将数据行的字段设置为插入的值。 使用 DataRowAdd 类的 Add 方法将数据行添加到数据表中。 把 DataAdapter 类的 InsertCommand 属性设置成需要插入记录的 INSERT 语句。 使用数据适配器提供的 Update 方法将新记录插入数

32、据库。 使用 DataSet 类提供的 AcceptChanges 方法将数据库与内存中的数据保持一致。当使用 DataSet 插入记录前,需要创建 Connection 对象以保证数据库连接,示例代码如下所示。string str = “server=(local);database=mytable;uid=sa;pwd=sa“; /创建连接字串SqlConnection con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接上述代码创建了一个数据库连接,并打开了数据库连接。完成数据连接后,就需要查询表中的数据并使用 DataAdapte

33、r 对象初始化适配器,示例代码如下所示。string strsql = “select * from mynews“; /编写 SQL 语句SqlDataAdapter da = new SqlDataAdapter(strsql, con); /创建适配器DataAdapter 对象默认构造函数包括两个参数,其中一个参数是需要执行的 SQL 语句,另一个是Connection 对象。在初始化适配器后,需要对适配器的相应的属性做设置,使用 SqlCommandBuilder对象可以让系统构造 InsertCommand 属性,示例代码如下所示。SqlCommandBuilder build =

34、 new SqlCommandBuilder(da); /构造 SQL 语句使用适配器的 Fill 方法能够填充 DataSet 数据集,示例代码如下所示。DataSet ds = new DataSet(); /创建数据集da.Fill(ds, “datatable“); /填充数据集DataTable tb = ds.Tables“datatable“; /创建表tb.PrimaryKey = new DataColumn tb.Columns“id“ ; /创建表的主键上述代码创建了一个 DataSet 数据集对象,被填充数据后,数据集中表的名称被命名为 datatable,该命名与数据

35、库中的表的名称并不冲突。填充了 DataSet 数据对象后,需要使用 DataRow 对象为DataSet 添加数据,示例代码如下所示。DataRow row = ds.Tables“datatable“.NewRow(); /创建 DataRowrow“title“ = “使用 DataSet 插入新行“; /赋值新列row“id“ = “15“;上述代码使用了 NewRow 方法创建新行返回 DataRow 对象,当 DataRow 对象中的相应的元素被250赋值后,则需要使用 Rows.Add 方法增加新行,因为只对 DataRow 对象赋值,并不能自动的在数据库中增加新行。示例代码如下

36、所示。ds.Tables“datatable“.Rows.Add(row); /添加新行上述代码将数据更新到 DataSet 数据集中,为了保持数据集中的数据和数据库的数据的一致性,需使用 Update 方法,示例代码如下所示。da.Update(ds, “datatable“); /更新数据当执行了 Update 方法后,数据库中的数据就会同步 DataSet 数据集中的数据进行数据更新。9.3 ASP.NET 更新数据库在应用程序的开发中,常常会需要对数据库中现有的内容进行更新操作。ADO.NET 提供了若干不同的更新数据库中记录的方法,如果需要更新数据库中的某列的值或者某几列的值,则需要

37、使用 SQL UPDATE 命令进行数据库更新。9.3.1 SQL UPDATE 数据更新语句使用 SQL UPDATE 语句能够实现数据库中数据的更新,SQL UPDATE 语句的一般语法格式如下所示。UPDATEtable_nameSET column1_name=expression1,column2_name=expression2,.columnN_name=expressionNWHERE condition1 AND|OR condition2上述代码规范了 UPDATE 语句的编写规范,其中: UPDATE 是 SQL 更新关键字。 table_name 是需要更新的表的名称。

38、 columnN_name 是需要更新的列的名称。 expression 是列相应的值。 WHERE 是 SQL 语句关键字。 condition 是条件。如果需要更新表 mytable 中的某行的数据,则可以编写 SQL UPDATE 语句进行更新,示例代码如下所示。UPDATE mytable SET title=修改后的数据 where id=3上述代码更新了 id 为 3 的数据中的 title,并将 title 字段的值修改为“修改后的数据”。9.3.2 使用 Command 对象更新记录如需要执行 UPDATE 语句时,同样可以使用 Command 对象执行语句。Command 对

39、象基本上能够251执行所有需要进行数据更新的 SQL 语句。使用 Command 对象进行数据库操作的步骤基本如下所示。 创建数据库连接。 创建一个 Command 对象,并指定一个 SQL UPDATE(或存储过程)。 使用 Command 对象的 ExecuteNonQuery()方法执行 UPDATE(或存储过程)。 关闭数据库连接。当需要执行 UPDATE 语句时,首先必须要打开到数据库的连接,打开连接后,使用 Command 对象执行 SQL 语句,示例代码如下所示。string str = “server=(local);database=mytable;uid=sa;pwd=sa

40、“;SqlConnection con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接其中,str 同样是数据连接字串,用来初始化 Connection 对象,说明如何连接数据库,当数据库连接完毕后,可以使用 Open 方法打开数据连接。完成数据库连接后,需创建一个新的 Command 对象进行数据更新,示例代码如下所示。SqlCommand cmd = new SqlCommand(“UPDATE mynews SET title=修改后的数据 where id=3“, con); /创建 Command 对象Command 对象的构造函

41、数的参数有两个,一个是需要执行的 SQL 语句,令一个是数据库连接对象。创建 Command 对象后,就可以执行 SQL 命令,执行后完成并关闭数据连接,示例代码如下所示。cmd.ExecuteNonQuery(); /执行 SQL 命令con.Close(); /关闭连接上述代码使用了 ExecuteNonQuery()方法进行 SQL UPDATE 语句的执行,从而能够更新数据库中的相应数据。9.3.3 使用 DataSet 数据集更新记录ADO.NET 的 DataSet 对象提供了更好的编程实现数据库的更新功能。因为 DataSet 对象与数据库始终不是连接的,开发人员可以向脱离数据库

42、的 DataSet 对象中增加列、删除列或更新列。当完成了修改后,则可以通过将 DataSet 对象连接到 DataAdapter 对象来将记录传输给数据库。DataSet 更新记录的步骤如下所示。 创建一个 Connection 对象。 创建一个 DataAdapter 对象。 初始化适配器。 使用数据适配器的 Fill 方法执行 SELECT 命令,并填充 DataSet。 执行 SqlCommandBuilder 方法生成 UpdataCommand 方法。 创建 DataTable 对象并指定相应的 DataSet 中的表。 创建 DataRow 对象并查找需要修改的相应行。 更改 D

43、ataRow 对象中的列的值。 使用 Update 方法进行数据更新。在更新记录前,首先需要查询出相应的数据,查询相应的数据后才能够填充 DataSet,示例代码如下所示。string str = “server=(local);database=mytable;uid=sa;pwd=sa“; /创建连接字串SqlConnection con = new SqlConnection(str); /创建连接对象con.Open(); /打开连接string strsql = “select * from mynews“; /执行查询252SqlDataAdapter da = new SqlDa

44、taAdapter(strsql, con); /使用 DataAdapterDataSet ds = new DataSet(); /使用 DataSetda.Fill(ds, “datatable“); /使用 Fill 方法填充 DataSet上述代码将查询出来的数据集保存在表为 datatable 的 DataSet 记录集中,DataSet 记录集的表的名称可以按照开发人员的喜好来编写,从而区分内存中表的数据和真实的数据库的区别。当需要处理数据时,只需要处理相应名称的表即可,示例代码如下所示。DataTable tb = ds.Tables“datatable“;当需要执行更新时,可

45、直接使用 DataSet 对象进行更新操作来修改其中的一行或多行记录,示例代码如下所示。DataTable tb = ds.Tables“datatable“;tb.PrimaryKey = new DataColumn tb.Columns“id“ ;DataRow row = tb.Rows.Find(1);row“title“ = “新标题“;当需要更新某个记录时,必须在更新之前查找到该行的记录。可以使用 Rows.Find 方法查找到相应的行,然后将数据集表中的该行的列值进行更新。使用 DataAdapter 的 Update 方法可以更新 DataSet数据集,并保持数据集和数据库中

46、数据的一致性,示例代码如下所示。da.Update(ds, “datatable“);在执行以上代码,可能会抛出异常“当传递具有已修改行的 DataRow 集合时,更新要求有效的UpdateCommand”。这是因为在更新时,并没有为 DataAdapter 对象配置 UpdateCommand 方法,可以通过 SqlCommandBuilder 对象配置 UpdateCommand 方法,示例代码如下所示。SqlCommandBuilder build = new SqlCommandBuilder(da);上述代码为 DataAdapter 对象自动配置了 UpdateCommand,De

47、leteCommand 等方法,当执行更新时,无需手动配置 UpdateCommand 方法。9.4 ASP.NET 删除数据当数据库中的数据过多,或需要对数据库进行数据优化时,则可能需要对数据库中的数据进行删除,例如用户的操作,长期不上线的用户资料,都可以删除。ADO.NET 提供多种数据库的删除方法,并且同样支持 DataSet 方法删除数据库。9.4.1 SQL DELETE 数据删除语句使用 SQL DELETE 语句能够实现数据库中数据的更新,SQL DELETE 语句的一般语法格式如下所示。DELETE FROMtable_nameWHERE condition1 AND|OR condition2上述代码规范了 DELETE 语句的编写规范,其中: DELETE 是 SQL 删除关键字。 FORM 是一个可以选择的关键字。 table_name 是表的名称。 WHERE 是一个 SQL 关键字。 conditionN 是执行 DELETE 命令中需要达成的若干条件。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁