Ich arbeite an einer Universal-App mit SQLite, und ich habe this tutorial zusammen mit SQLite für Windows Runtime (Windows Phone 8.1) und sqLite-net zu verwenden loslegen.Telefon-Version von Universal App scheint Caching-Datenbank auch nach der Deinstallation
ich dies mit überprüfen, ob die Datenbank vorhanden ist:
bool exists = true;
try {
var file = await ApplicationData.Current.LocalFolder.GetFileAsync("database.db");
} catch {
exists = false;
}
und wenn nicht einige Einsatz Ausführen von Abfragen Standard Daten zu füllen:
if(!exists) {
var conn = new SQLiteConnection("database.db);
conn.CreateTable<MyClass>();
MyClass.Insert("Default data value");
}
wo MyClass ist
[Table("MyClass")]
public class MyClass {
public MyClass() {
this.ID = -1;
this.Name = string.Empty;
}
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
[NotNull]
public string Name { get; set; }
internal static void Insert(string Name) {
var myclass = new MyClass();
myclass.Name = Name;
var conn = new SQLiteConnection("database.db");
try {
if(myclass.ID == -1) conn.Insert(myclass);
} catch { }
}
public async static Task<List<MyClass>> List() {
var conn = new SQLiteAsyncConnection("database.db");
var rs = conn.Table<MyClass>().OrderBy(t => t.ID);
return await rs.ToListAsync();
}
}
Das Problem ist jedes Mal, wenn ich eine neue Bereitstellung (nach der Deinstallation von meinem Testgerät), und der Code richtig feststellen, dass die Datenbank nicht existiert und führt die Einsätze, ich bin mit einer steigenden Anzahl von Datensätzen. Genauer gesagt, mache ich eine Einfügung von vier Standardwerten, aber bei meiner letzten Implementierung hat diese Tabelle derzeit 124 Datensätze (was bedeutet, dass ich 31 Mal eingesetzt habe) und wenn ich die Daten betrachte, werden die gleichen vier Werte wiederholt. Beim Durchlaufen des Codes treten wie erwartet nur vier Einfügungen auf.
Es scheint, als ob die Datenbank irgendwo zwischengespeichert wird. Ich habe die Windows Phone Power Tools ausgeführt und überprüft, dass nach der Deinstallation keine Dateien vorhanden sind. Fehle ich hier etwas?
Woher wissen Sie, dass zusätzliche Zeilen eingefügt wurden? Haben Sie irgendwo eine "db.Query" Funktion, die Sie nicht anzeigen? –
@ChubosaurusSoftware Die hier angegebene Klasse wurde zur Vereinfachung bearbeitet. Aber ja, ich habe eine Methode, die ich verwende, um eine ComboBox zu füllen. Ich habe es meinem obigen Code hinzugefügt. –
Sie können die Windows Phone Power Tools verwenden, um die DB-Datei nach der Installation herunterzuladen und diese in ein Tool wie SQLiteBrowser zu laden, um zu überprüfen, was vor sich geht. –