繁体   English   中英

将行添加到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM