我必须将相同的表写入两个不同的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_A
和SaveDt_B
并以这种方式调用。我仍然得到相同的结果。