我是 DataAdapter 的新手。所以请多多包涵。
当我们必须通过实际分配来强制更改数据表中的值时,为什么需要 UpdateSqlCommand和 UPDATE SQL 语句并将值赋予 Update 命令(使用参数)。这意味着仅提供更新 SQL 不起作用?
我们必须这样做,然后数据库才会在我们这样做时更新DataAdapter.Update()?
DataRow categoryRow = categoryTable.Rows[0];
categoryRow["CategoryName"] = "New Beverages";
因为像这里一样,列值Rows[0]是手动更改的。但是,如果有 10 行,DataTable并且我们希望根据 UPDATE SQL 语句条件更改超过 1 行中的值。
这是有效的完整代码,但是当通过手动更改特定行的列中的值来完成实际工作时,我不明白使用 UPDATE Sqlcommand。
private static void AdapterUpdate(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
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;
DataTable categoryTable = new DataTable();
dataAdpater.Fill(categoryTable);
DataRow categoryRow = categoryTable.Rows[0];
categoryRow["CategoryName"] = "New Beverages";
dataAdpater.Update(categoryTable);
Console.WriteLine("Rows after update.");
foreach (DataRow row in categoryTable.Rows)
{
{
Console.WriteLine("{0}: {1}", row[0], row[1]);
}
}
}
}