2012-01-05 17 views
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); 
} 

我可以添加新行或修改現有行,即可將更改提交到數據庫,但如果我嘗試清空表,更改爲「表」不能被提交到數據庫,此外,也不會拋出異常。

我想念什麼?

+1

儘管似乎沒有拋出任何異常,但使用Try ... Catch總是包圍數據庫操作是一種很好的編程習慣。 Clear方法將針對因違反關係而導致的任何錯誤發出異常。否則代碼看起來是正確的。 – 2012-01-05 16:45:09

+0

原來我可以通過在每一行調用DataRow.Delete()來清除表。但仍然不知道爲什麼DataTable.Clear()不起作用。 – kennyzx 2012-01-06 01:59:03

+0

有關Clear方法的MSDN參考信息並不十分清晰(沒有雙關語意思)。這裏有一個似乎有意義的鏈接:http://www.canaware.com/default.aspx?g=posts&t=932 – 2012-01-06 03:24:57

回答

0

ü應該在這條線得到錯誤:

table.PrimaryKey =新的DataColumn [] {table.Columns [ 「日」]};

這將意味着你已經捕捉到異常的其他地方,也許從函數被調用的地方,而不是在郵件框中顯示錯誤。

另一個原因可能是因爲你正在使用像表,適配器等詞......我的猜測是,你可能會超載一些保留字的功能。

相關問題