我使用 SqlDataAdapter
和 SqlCommandBuilder
对 SQL Server 数据库中的行执行 DML 事务。
我能够在数据库中添加和删除多行但更新。
这是代码:
SqlDataAdapter da = new SqlDataAdapter(@"select top 1 * from " + tableName,
ConnectionString);
SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da);
da.Update(dt);
我正在尝试使用 AcceptChanges
,但到目前为止它不起作用。
最佳答案
这是我在 C# 中通常做的事情。如果您想尝试一下。
//you may put this as a direct string or in a static class when layering
//you can pass table as hard-coded value or as a parameter
String SqlQuery = "UPDATE " +
" [tableName] " +
" SET [Column1ToBeUpdated]=@Column1Value," +
" [Column2ToBeUpdated]=@Column2Value" +
" WHERE ([ColumnxWithCondition] = @Condition)";
//add OR, AND operators as per your needs
//choose the correct SqlDbType for your column data types
public bool UpdateMyTable(String SqlQuery, Someclass obj)
{
SqlCommand sCommand = new SqlCommand(this.SqlQuery, (new SqlConnection(ConnectionString)));
sCommand.Parameters.Add("@Column1Value", SqlDbType.VarChar).Value = obj.col1Value;
sCommand.Parameters.Add("@Column2Value", SqlDbType.VarChar).Value = obj.col2Value;
sCommand.Parameters.Add("@Condition", SqlDbType.VarChar).Value = obj.condition;
sCommand.Connection.Open();
var rowsAffected = sCommand.ExecuteNonQuery();
sCommand.Connection.Close();
return rowsAffected > 0;
}
//if you want to see the number, you may return rowsAffected
关于c# - C#中如何使用SqlDataAdapter更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30770517/