2014-10-09 115 views
1
string s = "Select number,name from table where id = 5 and num = 20"; 

SqlDataAdapter adapter = new SqlDataAdapter(s, con); 
adapter.Fill(dset, "ABC"); 

SqlCommandBuilder sT = new SqlCommandBuilder(adapter); 
adapter.Update(ds,"ABC"); 

下面的代碼拋出一個異常,稱該表ABC無法找到如何使用數據集中的值更新數據庫?

+1

良好的格式是你的朋友。用它。 – 2014-10-09 11:44:02

+3

您的更新使用了選擇不同的數據集... – Paddy 2014-10-09 11:47:14

+1

@ Paddy Hah,這是一個很好的結果。 – 2014-10-09 11:59:43

回答

0

首先,作爲水稻said,你.Fill.Update方法使用不同的DataSet的。一個是dset,另一個是ds

我認爲發生在adapter.Update(ds,"ABC");行此異常,因爲DbDataAdapter.Fill methoddset創建ABC表,即使沒有表命名ABC

填充方法支持DataSet包含多個 DataTable對象,但其名稱只有大小寫不同的情況。在這種情況下, 填充執行區分大小寫的比較以找到相應的 表,並創建一個新表,如果不存在完全匹配

DbDataAdapter.Update method不這樣做。如果您嘗試更新不存在的表,它不會在您的DataSet中創建新表。

最接近的東西.Update方法搜索區分大小寫的匹配(在本例中爲abc),如果找不到它,則拋出異常。