为什么我的SQLite数据库表没有更新? (数据表更新)

时间:2016-12-16 09:29:40

标签: c# database sqlite datatable

我有一个带有SQLite数据库的c#应用程序。它有一个名为“Results_to_Risks”的表,我正在尝试更新。我先删除本地数据表中的一些行,然后使用更新表函数更新数据库中的表。

foreach(var row in temp)
{
    allResToRisks.Rows.Remove(row);
}

_databaseController.UpdateTable(allResToRisks, "Results_to_Risks");

我的数据库控制器更新表方法:

// Updates an entire database table.
    public void UpdateTable(DataTable datatable, string table, string condition = "")
    {
        using (SQLiteConnection dbConnection = new SQLiteConnection(conString))
        {
            using (var sqliteAdapter = new SQLiteDataAdapter("SELECT * FROM '" + @table + "'" + @condition, dbConnection))
            {
                dbConnection.Open();
                using(var builder = new SQLiteCommandBuilder(sqliteAdapter))
                {
                    sqliteAdapter.Update(datatable);
                }
            }
        }
    }

在这种特殊情况下,我只删除一行。数据表最终为空(Rows.Count == 0),因为这是该数据表中唯一的行。所以没有什么不妥。但是我的数据库中的表仍然有一行。

我做错了什么?

我在MDSN网站上看到了这个:

  

了解删除DataTable中的行与删除行之间的区别非常重要。当您调用Remove或RemoveAt方法时,将立即删除该行。如果随后将DataTable或DataSet传递给DataAdapter并调用Update,则后端数据源中的任何相应行都不会受到影响。使用Delete方法时,该行仍保留在DataTable中并标记为删除。如果然后将DataTable或DataSet传递给DataAdapter并调用Update,则会删除后端数据源中的相应行。

所以我尝试使用Delete()代替Remove()。但是,这没有任何区别。

0 个答案:

没有答案