调用时Sqlite DataAdapter不会更新

时间:2019-02-21 20:08:05

标签: c# sqlite

我必须将相同的表写入两个不同的Sqlite数据库。这些表会重写现有的数据和ID,因此我目前只删除整个表并进行重写。根据我写入数据库的顺序,C#SQLiteCommandBuilder不会更新第二个被调用的数据库。

如果我在Db_A之前致电Db_B,则A被写入而B被删除,反之亦然。谁能告诉我为什么第二个表输入要删除的代码,但是Sqlite适配器从不更新第二个表?它也不会引发错误。

public static bool WriteDt_Name(DataTable dt)
{
    using (connA = GetDbAConn())
    {
        SaveDataTable(connA, dt);
    }
    using (connB = GetDbBConn())
    {
        SaveDataTable(connB, dt);
    }
    return true;
}

public static void SaveDataTable(SQLiteConnection conn, DataTable dt)
{
    string table = dt.TableName;
    var cmd = conn.CreateCommand();

    cmd.CommandText = string.Format("DELETE FROM {0}", table);
    int val = cmd.ExecuteNonQuery();

    cmd.CommandText = string.Format("SELECT * FROM {0}", table);

    using (var adapter = new SQLiteDataAdapter(cmd))
    {
        using (SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter))
        {
            adapter.Update(dt);
            conn.Close();
        }
    }
}

public static SQLiteConnection GetDbAConn()
{
    string base_dir = System.AppDomain.CurrentDomain.BaseDirectory;
    string path = Directory.GetParent(Directory.GetParent(Directory.GetParent(Directory.GetParent(Directory.GetParent(base_dir).ToString()).ToString()).ToString()).ToString()).ToString();
    path = path + "\\db\\DbA.sqlite;";
    SQLiteConnection conn = new SQLiteConnection("Data Source=" + path + "Version=3;");
    return conn;
}

我尝试将SaveDataTable分为SaveDt_ASaveDt_B并以这种方式调用。我仍然得到相同的结果。

0 个答案:

没有答案