Ich verwende System.Data.SQLite.dll
, um die In-Memory-SQLite-Datenbank zu verwenden. Nachdem das Programm beendet ist, möchte ich die In-Memory-Datenbank in eine .db3-Datei für die nächste Verwendung ausgeben. Wie kann ich dies in C# erreichen?Wie delete SQLite In-Memory-Datenbank in Datei mit ADO.NET?
Antwort
Nach meinem besten Wissen gibt es keine integrierte Funktionalität, um dies in System.Data.SQLite.dll zu erreichen. Die Funktionalität existiert jedoch im Client sqlite3.exe, der zusammen mit dem SQLite-Kern gepflegt wird.
Dies ist, wie ich es mit system.data.sqlite.dll tun würde:
SQL-Anweisungen erhalten neue Datenbankstruktur zu erstellen.
select sql from sqlite_master where name not like 'sqlite_%';
Namen aller Benutzertabellen abrufen.
select name from sqlite_master where type='table' and name not like 'sqlite_%';
Erstellen Sie die On-Disk-Datenbank in einigen neuen SQLiteConnection.
Führen Sie alle zuvor erhaltenen SQL-Anweisungen aus, um die Datenbankstruktur in der Datenbank auf der Festplatte zu erstellen.
Schließen Sie die separate Verbindung zur Datenbank auf der Festplatte.
Hängen Sie die On-Disk-Datenbank an die In-Memory-Datenbank an.
attach 'ondisk.db3' as 'ondisk';
Für jede früher erhaltenen Benutzertabelle, kopieren Sie den Inhalt aus dem in-Speicher auf die On-Disk-Datenbank.
insert into ondisk.TableX select * from main.TableX; insert into ondisk.TableY select * from main.TableY;
klären bitte ... – Hassanation
ich wie kodieren möchte:
using (var conn = new SQLiteConnection("Data Source=:memory:") { conn.Open(); // do insert, update... // how to dump data into a file? conn.Close(); }
– xiagao1982