ASP.NET基础教程-使用CommandBuilder对象自动生成SQL语句对数据进行批量更新

来源:互联网 发布:myeclipse python 编辑:程序博客网 时间:2024/06/10 00:26
用自己的INSERT、UPDATE与DELETE语句或存储过程将改变从DataSet 推向数据库中需要编写大量代码。为了编写这些代码,可以用一个CommandBuilder对象,自动生成INSERT、UPDATE与DELETE命 令,并在DataAdapter对象的InsertCommand、UpdateCommand、DeleteCommand属性中设置这些命令。当改变 DataSet中的数据并调用DataAdapter的Update()方法时,运行自动生成的命令,将改变从DataSet推向数据库。
尽管利用CommandBuilder对象可以节省一些代码编写工作,但使用此对象时,要记住以下局限:
1、DataAdpater对象的SelectCommand命令只能从一个表中读取。
2、SelectCommand中使用的数据库表必须包含主键。
3、表格主键必须放在SelectCommand中。
4、CommandBuilder生成命令需要一定时间,因为它要检查数据库。
注意:由于CommandBuilder会使程序性能下降,因此应避免大数据量批量更新使用,为了提高性能,应使用存储过程
代码示例如下:
一、引入命名空间

using System.Data.SqlClient;//用于操作SQLSERVER数据库
using System.Configuration;//用于引用Web.config配置文件中的数据库连接语句
二、创建数据库连接和读取对象
private static SqlConnection con;
private static SqlDataAdapter da;
private static DataSet ds;
private static SqlCommandBuilder cb;
private static string oSql;
三、读取数据
private void Read_Data_Click(object sender, System.EventArgs e){
   con=new SqlConnection(@ConfigurationSettings.AppSettings["server"] );
   con.Open();
   oSql="SELECT 部门,电话分类,电话,ID FROM 公司电话 ORDER BY 部门,电话分类";
   da=new SqlDataAdapter(oSql,con);
   cb=new SqlCommandBuilder(da);
   ds=new DataSet();
   da.Fill(ds,"公司电话");
   con.Close();
   dataGrid1.SetDataBinding(ds,"公司电话");
   }
四、更新数据
private void Update_Data_Click(object sender, System.EventArgs e){
  con.Open();
  da.Update(ds,"公司电话");
  con.Close();
  MessageBox.Show("数据更新完毕");}
原创粉丝点击