ASP.NET基础教程-使用CommandBuilder对象自动生成SQL语句对数据进行批量更新
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://chenxing.blog.51cto.com/240526/45058 |
用自己的INSERT、UPDATE与DELETE语句或存储过程将改变从DataSet推向数据库中需要编写大量代码。为了编写这些代码,可以用一个CommandBuilder对象,自动生成INSERT、UPDATE与DELETE命令,并在DataAdapter对象的InsertCommand、UpdateCommand、DeleteCommand属性中设置这些命令。当改变DataSet中的数据并调用DataAdapter的Update()方法时,运行自动生成的命令,将改变从DataSet推向数据库。
尽管利用CommandBuilder对象可以节省一些代码编写工作,但使用此对象时,要记住以下局限: 1、DataAdpater对象的SelectCommand命令只能从一个表中读取。 本文出自 51CTO.COM技术博客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("数据更新完毕");} |


晨星
博客统计信息
热门文章
最新评论
友情链接

