下面的代码不会更新我的表。但更新后的行变量值为1。我不明白这背后的原因是什么。请帮帮忙。
SqlConnection connection1 = new SqlConnection(connectionString);
connection1.Open();
var wktbl = new DataTable();
var cmd = new SqlCommand("SELECT * FROM Test", connection1);
var da1 = new SqlDataAdapter(cmd);
var b = new SqlCommandBuilder(da1);
da1.Fill(wktbl);
wktbl.Rows[0][2] = "5";
da1.UpdateCommand = b.GetUpdateCommand(true);
int rows = da1.Update(wktbl);发布于 2014-07-27 12:06:47
查看this page。它显示了下面使用dataadapter进行更新的示例。
更新以下示例演示了如何通过显式设置DataAdapter的UpdateCommand并调用其
方法来对已修改的行执行更新。请注意,UPDATE语句的WHERE子句中指定的参数被设置为使用SourceColumn的原始值。这一点很重要,因为当前值可能已被修改,并且可能与数据源中的值不匹配。原始值是用于从数据源填充DataTable的值。
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]);
}
}
}
}发布于 2014-07-27 20:19:34
我找到问题了。这是因为connectionString有|数据目录|。运行应用程序时,MDF文件位置不同。
https://stackoverflow.com/questions/24977689
复制相似问题