【发布时间】:2014-08-27 18:25:07
【问题描述】:
我在从 MSSQL 数据库获取数据的 Windows 应用程序中使用 datagridview。在网格中进行更改(例如编辑行和添加新行)后,我正在使用 sqlAdapter.update(dataset, tableName) 更新数据库。 编辑的行和新添加的行正确地存储在数据库中,
但如果我删除 datagrid 中的行并将其存储在DataTable 中,然后使用sqlAdapter.update(dataset, tableName). 进行更新,它不会更新数据库。
请注意:updatedDS 中的表格在点击以下代码之前具有更新的值。
public bool UpdateDBwithDataSet(DataSet updatedDS, string dsName)
{
try
{
Concheck();
//sAdapter = new SqlDataAdapter(SqlQuery, con);
CCDcmdBld = new SqlCommandBuilder(sAdapter);
sAdapter.DeleteCommand = CCDcmdBld.GetDeleteCommand(true);
sAdapter.UpdateCommand = CCDcmdBld.GetUpdateCommand(true);
sAdapter.InsertCommand = CCDcmdBld.GetInsertCommand(true);
if (sAdapter.Update(updatedDS, dsName) > 0)
return true;
else
return false;
}
catch (Exception ex)
{
return false;
}
finally
{
if (con.State == ConnectionState.Open) { con.Close(); }
}
}
请告诉我这里出了什么问题。 (注意:它也不会抛出任何异常。)
【问题讨论】:
-
如果在调用更新之前,出于调试目的,您插入了对
DataTable deletedRows = updateDS.Tables[dsName].GetChanges(DataRowState.Deleted)的调用,您是否获得了包含已删除行的表?