打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C# 向数据库批量更新数据(插入、更新、删除)
分类: C#、JAVA等编程类 2012-11-28 17:30 6763人阅读 评论(0) 收藏 举报

批量操作数据是利用 CommandBuilder  和 DataAdapter.Update() 方法 对数据库进行批量更新

说解:
DataAdapter中有四个重要对象:SelectCommand,InsertCommand,UpdateCommand ,DeleteCommand  以SelectCommand 最为重要
只要设置好DataAdapter.SelectCommand(其中的CommandText) 其它三个可以由 CommandBuilder  自动生成。如下面看到的:

DataAdapter = new OracleDataAdapter(cmd); 
OracleCommandBuilder ocb = new OracleCommandBuilder(dataAdapter);
dataAdapter.SelectCommand.CommandText = "SELECT * FROM BOBIMPORT WHERE ROWNUM=0";
dataAdapter.InsertCommand = ocb.GetInsertCommand();
dataAdapter.UpdateCommand = ocb.GetUpdateCommand();
dataAdapter.DeleteCommand = ocb.GetDeleteCommand();

//dataAdapter.SelectCommand 对象其实就是对 cmd的引用。

总结:要正确使用 DataAdapter 的 DataAdapter.Update() 方法 必须要设置 dataAdapter.SelectCommand.CommandText 属性

 

代码如下:

[csharp] view plaincopy
  1. using (OracleConnection con = new OracleConnection(CONNECTIONSTR))  
  2.            {  
  3.                using (OracleCommand cmd = con.CreateCommand())  
  4.                {  
  5.                    using (OracleDataAdapter da = new OracleDataAdapter(cmd))  
  6.                    {  
  7.                        System.Data.DataTable dtDB = new System.Data.DataTable();  
  8.                        //添加列,列的类型要求和数据库中要操作的表的列类型一致或兼容,以oracle为例  
  9.                        dtDB.Columns.Add("user_id", typeof(string)); //varchar2  
  10.                        dtDB.Columns.Add("name", typeof(string));    //varchar2  
  11.                        dtDB.Columns.Add("sex", typeof(decimal));    //number  
  12.                        dtDB.Columns.Add("moneh", typeof(double));   //number(10,2)  
  13.                          
  14.                        OracleCommandBuilder ocb = new OracleCommandBuilder(da);  
  15.                        //必须要有SelectCommand, da.SelectCommand对象是cmd的引用  
  16.                        da.SelectCommand.CommandText = "SELECT * FROM BOBIMPORT WHERE ROWNUM=0";  
  17.                        da.InsertCommand = ocb.GetInsertCommand();  
  18.                          
  19.                        //da.Fill(dtDB);   如果上面指定了InsertCommand 就不用fill  
  20.   
  21.                        for (int i = 0; i < dt.Rows.Count; i++)  
  22.                        {  
  23.                            dtDB.Rows.Add(dt.Rows[i].ItemArray);  
  24.                              
  25.                        }  
  26.                        int count=da.Update(dtDB);  
  27.   
  28.                        MessageBox.Show(count.ToString());  
  29.                    }  
  30.                }  


 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
DataBase和DataSet同步数据
对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成
对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成
[C#]使用DataSet Datatable 更新数据库的三种方式
ADO.net学习纪录 (二)
ADO.NET中5大对象简介
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服