.NET 批量插入数据,DataSet, SqlDataAdapter.Update
2012-08-29 11:16
791 查看
在.NET中可以利用SqlDataAdapter类的Update方法批量把数据更新到数据库,这样可以提高写入数据库的工作效率,
减少操作数据频率,减轻数据库压力。
方法的使用详细可以参看MSDN中文 http://technet.microsoft.com/zh-cn/library/system.data.sqlclient.sqldataadapter.aspx
Update方法有5个得载, 下面以Update(DataTable)
做一个简单的例子,往数据库里批量写入数据。
下面是实现在的代码清单:
代码清单中已经对代码进行注释了,
DataSet, DataTable相当于数据库、表在内存中的映射,而DataTable中的数据行有一个只读的属性RowState 来标识Row的状态,
执行Update操作时会把RowState为Added的数据批量插入数据库,利用这些特性,就可以很方便,容易,高效的把数据批量插入数据库。
经测试,完全OK。
减少操作数据频率,减轻数据库压力。
方法的使用详细可以参看MSDN中文 http://technet.microsoft.com/zh-cn/library/system.data.sqlclient.sqldataadapter.aspx
Update方法有5个得载, 下面以Update(DataTable)
做一个简单的例子,往数据库里批量写入数据。
下面是实现在的代码清单:
//第一步是创建表结构,准备插入到数据库的数据, 可以自己拼,也可以来自查询。 //如果表数据来自查询,可以把通过DataSet.Tables["表名"].Clone() 方法进行浅拷贝。 DataTable dt = new DataTable("User"); dt.Columns.Add("UserId", Type.GetType("System.Int32")); dt.Columns.Add("UserName", Type.GetType("System.String")); dt.Columns.Add("Password", Type.GetType("System.String")); dt.Columns.Add("Sex", Type.GetType("System.Boolean")); dt.Columns.Add("Age", Type.GetType("System.Int32")); int count = 1000; //往数据库里插入1000条数据 DataRow dr = null; for (int i = 0; i < count; i++) { dr = dt.NewRow(); dr["UserId"] = i; dr["UserName"] = "Michael" + i; dr["Password"] = "abc123456" + i; dr["Sex"] = i / 2 == 0 ? true : false; dr["Age"] = 20 + i; dt.Rows.Add(dr); //通过DataTable.Rows.Add(DataRow dr), 添加到DataTable的数据, DataTable.Rows的每一行的数据的RowState 为Added, SqlDataAdapter.Update 方法会把 DataTable 数据行 RowState 为Added 的行批量插入到数据库中,想对RowState有更进一步的了解,可以在网上搜索相关的资料看看,这里不做详细介绍了。 } //数据库连接,可以自定义 using (SqlConnection conn = new SqlConnection("server=.;database=MyTest;uid=sa;pwd=justdoit")) { string sql = "INSERT INTO [User] (UserId, UserName, Password, Sex, Age) VALUES (@UserId, @UserName, @Password, @Sex, @Age)"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.Add("@UserId", SqlDbType.Int, 8, "UserId"); cmd.Parameters.Add("@UserName", SqlDbType.NVarChar, 20, "UserName"); cmd.Parameters.Add("@Password", SqlDbType.NVarChar, 50, "Password"); cmd.Parameters.Add("@Sex", SqlDbType.Bit, 8, "Sex"); cmd.Parameters.Add("@Age", SqlDbType.Int, 8, "Age"); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.InsertCommand = cmd; adapter.Update(dt); //执行指量插入数据 //假如是使用 Update(DataSet, String), 则先把数据插入到DataSet的DataTable中,再执行批量插入, //和 adapter.Update(DataTable) 是一样的原理。 }
代码清单中已经对代码进行注释了,
DataSet, DataTable相当于数据库、表在内存中的映射,而DataTable中的数据行有一个只读的属性RowState 来标识Row的状态,
执行Update操作时会把RowState为Added的数据批量插入数据库,利用这些特性,就可以很方便,容易,高效的把数据批量插入数据库。
经测试,完全OK。
相关文章推荐
- DataTable数据批量插入数据的库三种方法:SqlCommand.EcecuteNonQurery(),SqlDataAdapter.Update(DataTable) ,SqlBulkCopy.
- C# SqlDataAdapter.update结合事务(SqlTransaction)批量更新数据
- 通过SqlDataAdapter 插入DataSet中的数据到数据库
- ADO.NET—Asp.net 用DataSet对象更新数据(SqlDataAdapter)
- ADO.NET—Asp.net 用DataSet对象更新数据(SqlDataAdapter)
- SqlDataAdapter.update结合事务(SqlTransaction)批量更新数据
- Asp.net 用DataSet对象更新数据(SqlDataAdapter)
- Asp.net 用DataSet对象更新数据(SqlDataAdapter) DataTable加主键
- 通过SqlDataAdapter 插入DataSet中的数据到数据库
- C#使用SqlDataAdapter 实现数据的批量插入和更新
- C# SqlDataAdapter, DataSet接收数据库数据
- SqlDataAdapter 批量更新数据库表
- C#里ADO.NET的SqlDataAdapter新增数据
- SqlDataAdapter 批量更新数据库表
- 使用断开数据--DataSet和SqlDataAdapter .
- 奇怪的SqlDataAdapter.Update(Dataset)问题....请高手进来帮忙搞定
- 在C#使用SqlDataAdapter的Update更新数据
- 用SqlDataAdapter.Update(DataSet Ds)更新数据库
- Winform使用ADO.NET的SqlDataAdapter更新多表数据
- 用SqlDataAdapter.Update(DataSet Ds)更新数据库