![](/img/trans.png)
[英]How can I get the identity of a row that was just added to a DataTable?
[英]I get no errors when adding a row to a DataTable, but the row is not added to the database
我正在尝试使用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
调用AcceptChanges
会将所有更改标记为已接受(即,它将所有状态重置为Unmodified
),因此不会将任何更改保存到数据库。 删除对表和数据集的调用,您的更改应保存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.