SqlDataAdapter批量更新数据---实例
2010-11-18 11:39
330 查看
想用SqlDataAdapter进行批量更新数据,在网上找了资料,自己写个小例子:
一:数据表--TestUpdate
二:页面前段---添加文本框的数据到缓存表里然后点击保存进行批量更新或插入
三:后台代码
四:效果
数据库结果
其它: 批量导入数据sqlbulkcopy最快,sqldataadapter.update()次之,sqlcommand.ExecuteNonQuery()最慢。
一:数据表--TestUpdate
二:页面前段---添加文本框的数据到缓存表里然后点击保存进行批量更新或插入
<form id="form1" runat="server"> <div> 用户名:<asp:TextBox ID="txtUserName" runat="server" ></asp:TextBox> <asp:Button ID="btnAdd" Text="添加" runat="server" onclick="btnAdd_Click" /> <asp:DataGrid ID="DataGrid" runat="server" AutoGenerateColumns="false"> <Columns> <asp:BoundColumn DataField="UserName" HeaderText="用户名"></asp:BoundColumn> </Columns> </asp:DataGrid> <asp:Button ID="btnSave" runat="server" Text="保存" onclick="btnSave_Click" /> </div> <div><asp:Label ID="lblCounter" runat="server" ></asp:Label></div> </form>
三:后台代码
public partial class _Default : System.Web.UI.Page { /// <summary> /// 缓存表 /// </summary> private DataTable EmpDT { get { return (DataTable)ViewState["EmpDT"]; } set { ViewState["EmpDT"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { EmpDT = new DataTable(); EmpDT.Columns.Add("UserName"); EmpDT.AcceptChanges(); } } protected void btnAdd_Click(object sender, EventArgs e) { DataRow dr = EmpDT.NewRow(); dr[0] = txtUserName.Text; EmpDT.Rows.Add(dr); EmpDT.AcceptChanges(); DataGrid.DataSource = EmpDT; DataGrid.DataBind(); } protected void btnSave_Click(object sender, EventArgs e) { string sql = "SELECT * FROM TestUpdate"; string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; SqlConnection cn = new SqlConnection(conn); SqlDataAdapter da = new SqlDataAdapter(sql, cn); DataSet ds = new DataSet(); try { cn.Open(); da.Fill(ds, "dsTable1"); } finally { cn.Close(); } ////批量添加数据 //DataRow dr; //for (int i = 0; i < EmpDT.Rows.Count; i++) //{ // dr = ds.Tables["dsTable1"].NewRow(); // dr["UserName"] = EmpDT.Rows[i]["UserName"].ToString(); // ds.Tables["dsTable1"].Rows.Add(dr); //} //sql = "INSERT INTO TestUpdate (UserName) VALUES (@UserName)"; //da.InsertCommand = new SqlCommand(sql, cn); //SqlParameter param = new SqlParameter(); //param = da.InsertCommand.Parameters.Add(new SqlParameter("@UserName", SqlDbType.Char, 50)); //param.SourceVersion = DataRowVersion.Current; //param.SourceColumn = "UserName"; //批量更新 for (int i = 0; i < ds.Tables["dsTable1"].Rows.Count;i++ ) { ds.Tables["dsTable1"].Rows[i][1] = "Update"; } sql = "Update TestUpdate set UserName=@UserName"; da.UpdateCommand = new SqlCommand(sql, cn); SqlParameter param = new SqlParameter(); param = da.UpdateCommand.Parameters.Add(new SqlParameter("@UserName", SqlDbType.Char, 50)); param.SourceVersion = DataRowVersion.Current; param.SourceColumn = "UserName"; //批量更新数据 try { cn.Open(); da.Update(ds, "dsTable1"); } catch (Exception ex) { lblCounter.Text = "数据库错误:" + ex.Message.ToString(); } finally { cn.Close(); } } }
四:效果
数据库结果
其它: 批量导入数据sqlbulkcopy最快,sqldataadapter.update()次之,sqlcommand.ExecuteNonQuery()最慢。
相关文章推荐
- 第二十九讲 ADO.NET(玩SQL语句) 实例补充之完善Excel删除数据及数据更新功能
- Python数据挖掘实例(实时更新)
- sql语句中not in和exists 的用法以及更新两个表数据的插入实例
- Yii2 批量插入、更新数据实例
- SQL 数据更新(插入数据,修改数据,删除数据) 实例_(学生,课程表,选修表)
- ThinkPHP实现更新数据实例详解(demo)
- 数据结构:(更新中)成员变量、成员函数和实例一般命名和定义方法
- Dev控件综合实例(后台数据操作,控件数据级联更新,前后台异步交互)
- MySQL 多会话之间更新数据的小实例
- 关于Dataset批量更新数据的实例方法
- ThinkPHP实现更新数据实例详解(demo)
- 实例讲解Java批量插入、更新数据
- postgre SQL 中的 触发器 (实例应用,如何备份更新之前的差分数据)
- Dev控件综合实例(后台数据操作,控件数据级联更新,前后台异步交互)
- Zookeeper实例Curator API-使用Curator更新数据内容
- Swift教程_CoreData实例(四)_构建控制层(查询、更新数据)
- 赵雅智_android实例_当监听类有数据更新时下拉刷新
- 跨平台app开发中的点击更新数据实例
- android客户端用bindservice来动态更新UI数据的实例
- 学习学习 Dev控件综合实例(后台数据操作,控件数据级联更新,前后台异步交互)