深入.NET DataTable 1、ADO.NET 相关对象一句话介绍 1)DataAdapter: DataAdapter 实际是一个 SQL 语句集合,因为对 Database 的操作最终需要归结到 SQL 语句。2)Dataset: DataSet 可以理解成若干 DataTable 的集合,DataSet 在内存里面维护一个表集合包括表间关系。对于.NET Framew ork 2.0 之前的版本,DataSet 在 ADO.NET 中拥有至关重要的作用,但在其后的版本中,由于 DataTable 类的完备(例如与 XML 相关的几个方法以及 Merge 方法),其作用稍有削弱,甚至于有些情况下你去初始化一个 DataSet 对象本身就是多余的。 3)DataView : 与数据库中的视图在概念上是类似的。DataView 本身并不真正包含数据行,而只是包含指向源DataTable 中数据行的引用,这一点你可以通过 object.ReferenceEquals()方法来验证。 4)DataTable: ADO.NET 的核心对象。它是位于内存中的一张表,是你执行 SQL 查询之后的结果集,可以形象地把它理解为一张包含若干行若干列的表格。 2、如何更新数据到 Database 从本质上来说,你对 Database 操作总是归结到 SQL 语句,但是从表面上我们可以作一点区分, 1)直接使用 SQL 命令 在.NET 中,最常见的是拼接 SQL 字符串,使用 Command 对象来执行此命令以达到操作Database 的目的,例如,string sql = "update table1 set fvalue=" + this.textBox1.Text + " where fname='x'"; SqlCommand cmd = new SqlCommand(sql,conn); cmd.ExecuteNonQuery(); 这是一种最直接浅显的方式,因为 SQL 语句就在你眼前,反过来说,这需要你对 SQL 命令有一定的了解。 2)使用 DataAdapter.Update() 另外一种方式,是使用 DataAdapter.Update()方法,这并不是说我们不需要 SQL 语句了,只是 SQL 语句拼接的工作已经交给了 DataAdapter(实际上是交给了 CommandBuilder)来完成(以参数的形式),例如, string c = "select fname,fvalue from table1"; SqlCommand cmd = new SqlCommand(c,conn); SqlDataAdapter da = new SqlDataAdapter(cmd); SqlCommandBuilder scb = new SqlCommandBuilder(da); //(1) DataTable dt = new DataTable(); da.Fill(dt); dt.Row s[0].Delete();//(2) da.Update(dt); 在这里,你看不到SQL 语句,因为在你初始化SqlCommandBuilder 的过程中,将自动根据表结构(基于你的Sel...