Zusammenführen von zwei SQLite-Datenbank-Dateien (C# .NET)
Ich bin mit C#/.NET mit C# - wrapper für SQLite. Ich bin versucht zum Zusammenführen von zwei SQLite Datenbanken zusammen, während ohne Duplikate.
Fand ich diese, die sich bezogen wird, von ein paar verschiedenen Fragen im forum. http://old.nabble.com/Attempting-to-merge-large-databases-td18131366.html
Ich habe versucht, die unter-Abfragen, die ich strukturiert aus dem link, den ich angegeben habe, aber Sie führen dazu, dass Ausnahmen, die Datenbanken nicht zusammengeführt werden, und die ursprüngliche Datenbank nicht geändert zu löschen.
attach 'c:\test\b.db3' as toMerge;
insert into AuditRecords select * from toMerge.AuditRecords;
Hier ist mein Abfrage-code.
public void importData(String fileLoc)
{
SQLiteTransaction trans;
string SQL = "ATTACH '" + fileLoc + "' AS TOMERGE";
SQLiteCommand cmd = new SQLiteCommand(SQL);
cmd.Connection = connection;
connection.Open();
trans = connection.BeginTransaction();
int retval = 0;
try
{
retval = cmd.ExecuteNonQuery();
}
catch (Exception)
{
trans.Rollback();
MessageBox.Show("An error occurred, your import was not completed.");
}
finally
{
trans.Commit();
cmd.Dispose();
connection.Close();
}
SQL = "INSERT INTO SUBCONTRACTOR SELECT * FROM TOMERGE.SUBCONTRACTOR";
cmd = new SQLiteCommand(SQL);
cmd.Connection = connection;
connection.Open();
trans = connection.BeginTransaction();
retval = 0;
try
{
retval = cmd.ExecuteNonQuery();
}
catch (Exception)
{
trans.Rollback();
MessageBox.Show("An error occurred, your import was not completed.");
}
finally
{
trans.Commit();
cmd.Dispose();
connection.Close();
}
}
Meine Frage ist, was mache ich falsch? Und ist jeder, der sich mit der insert-Befehl? Ich bin mir nicht sicher, ob es Duplikate ausschließen, wie ich brauche.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim anfügen einer Datenbank in SQLite, müssen Sie führen jede Aussage (egal ob insert, update, delete) in einer einzigen Verbindung/Transaktion. Dont Schließen Sie die Verbindung in zwischen. Es sollte komplett in einer einzigen Transaktion.
versuchen, diese