Я должен написать одинаковые таблицы для двух разных баз данных Sqlite.Таблицы переписывают существующие данные и идентификаторы, поэтому в настоящее время я просто удаляю всю таблицу и переписываю.В зависимости от порядка записи в базу данных, C # SQLiteCommandBuilder
не обновляет второй вызванный DB.
Если я позвоню 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
и назвать его таким образом.Я все еще получаю тот же результат.