我正在尝试使用ODBC向PostgreSQL数据库中的表添加一行。虽然没有抛出异常,但该行未添加到表中。这是我的代码:
void TestNewRow()
{
try
{
DataSet dataSet = new DataSet();
OdbcDataAdapter adapter = new OdbcDataAdapter();
adapter.SelectCommand =
new OdbcCommand("select read_time from plant_genie.plc_values_by_tag", m_db.GetConnection());
OdbcCommandBuilder builder =
new OdbcCommandBuilder(adapter);
adapter.Fill(dataSet);
DataTable valuesTable = dataSet.Tables[0];
DataRow newRow = valuesTable.NewRow();
newRow["read_time"] = DateTime.Now;
valuesTable.Rows.Add(newRow);
valuesTable.AcceptChanges();
dataSet.AcceptChanges();
adapter.Update(dataSet);
}
catch (Exception ex)
{
int a = 1;
}
}
我在异常处理程序中有一个断点,在函数末尾有另一个断点。第二个断点被击中但不是第一个断点,因此不会抛出任何异常。我已经三重检查我正在连接到正确的数据库。我认为我不应该需要两个AcceptChanges()调用和一个Update()调用,但即使有了所有这些过度杀戮,我仍然没有在我的表中获得新行。我做错了什么?
我试图找到这个问题的副本,但是有很多关于添加行的问题,如果有重复的话,它就会被隐藏。
感谢您的帮助。
ROBR
答案 0 :(得分:2)
调用AcceptChanges
会将所有更改标记为已接受(即它将所有内容的状态重置为Unmodified
),因此不会将更改保存到数据库中。删除对表和数据集的调用,应保存更改。