0
我嘗試使用DBDataAdapter.Update Method中的代碼示例清除數據庫中的表。爲什麼調用DataTable.Clear(),那麼DBDataAdapter.Update(DataTable)不會清除數據庫中的表?
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM WebCam", connection);
DataTable table = new DataTable();
adapter.Fill(table);
table.PrimaryKey = new DataColumn[] { table.Columns["Date"] };
//table.Rows[0]["Date"] = System.DateTime.Now; //It's OK to modify a row
table.Clear(); //But it is not working to clear the table
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(table);
}
我可以添加新行或修改現有行,即可將更改提交到數據庫,但如果我嘗試清空表,更改爲「表」不能被提交到數據庫,此外,也不會拋出異常。
我想念什麼?
儘管似乎沒有拋出任何異常,但使用Try ... Catch總是包圍數據庫操作是一種很好的編程習慣。 Clear方法將針對因違反關係而導致的任何錯誤發出異常。否則代碼看起來是正確的。 – 2012-01-05 16:45:09
原來我可以通過在每一行調用DataRow.Delete()來清除表。但仍然不知道爲什麼DataTable.Clear()不起作用。 – kennyzx 2012-01-06 01:59:03
有關Clear方法的MSDN參考信息並不十分清晰(沒有雙關語意思)。這裏有一個似乎有意義的鏈接:http://www.canaware.com/default.aspx?g=posts&t=932 – 2012-01-06 03:24:57