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