2014-10-09 76 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),如果找不到它,则抛出异常。