
1、首先打开SQL Server Management管理工具,使用sql语句创建一张测试表。
2、在测试表中,插入3条测试数据。
3、使用一条语句批量修改整个表的数据。
4、使用一条语句批量修改指定条数的记录。
5、使用一条语句批量修改这三条数据(按条件修改值)。
6、使用一条语句批量修改数据,使用where和case when。
使用 DataAdapter 更新数据源需要注意:
a)如果 SelectCommand 返回 OUTER JOIN 的结果,则 DataAdapter 不会为生成的 DataTable 设置 PrimaryKey 值。您必须自己定义PrimaryKey 以确保正确解析重复行.
b)如果对 DataSet、DataTable 或 DataRow 调用 AcceptChanges,则将使 DataRow 的所有 Original 值都将被重写为该 DataRow 的 Current 值。如果已修改将该行标识为唯一行的字段值,那么当调用 AcceptChanges 后,Original 值将不再匹配数据源中的值。
看看下面例子:
// Assumes connection is a valid SqlConnection.
SqlDataAdapter dataAdpater = new SqlDataAdapter(
"SELECT CategoryID, CategoryName FROM Categories", connection)
dataAdpater.UpdateCommand = new SqlCommand(
"UPDATE Categories SET CategoryName = @CategoryName " +
"WHERE CategoryID = @CategoryID" , connection)
dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryName", SqlDbType.NVarChar, 15, "CategoryName")
SqlParameter parameter = dataAdpater.UpdateCommand.Parameters.Add(
"@CategoryID", SqlDbType.Int)
parameter.SourceColumn = "CategoryID"
parameter.SourceVersion = DataRowVersion.Original
DataSet dataSet = new DataSet()
dataAdpater.Fill(dataSet, "Categories")
DataRow row = dataSet.Tables["Categories"].Rows[0]
row ["CategoryName"] = "New Category"
dataAdpater.Update(dataSet, "Categories")
插入、更新和删除的排序
在许多情况下,以何种顺序向数据源发送通过 DataSet 作出的更改是相当重要的。
例如,如果已更新现有行的主键值并且添加了具有新主键值的新行,则务必要在处理插入之前处理更新。
可以使用 DataTable 的 Select 方法来返回仅引用具有特定 RowState 的 DataRow 数组。然后可以将返回的 DataRow 数组传递到 DataAdapter 的 Update 方法来处理已修改的行。通过指定要更新的行的子集,可以控制处理插入、更新和删除的顺序。
示例如下:DataTable table = dataSet.Tables["Customers"]
// First process deletes.
adapter.Update(table.Select(null, null, DataViewRowState.Deleted))
// Next process updates.
adapter.Update(table.Select(null, null,
DataViewRowState.ModifiedCurrent))
// Finally, process inserts.
adapter.Update(table.Select(null, null, DataViewRowState.Added))
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)