Android Sugar ORM mit vorhandenem DB- und benutzerdefiniertem Dateipfad

8

Ich kann Sugar ORM mit den mitgelieferten Beispielen verwenden.

In meinem Anwendungsfall lade ich eine SQLite-DB vom Server herunter (ETL lädt sie in Millionen von Datensätzen, also muss die Server-Seite erledigt werden). Der Download wird in einem benutzerdefinierten Pfad im internen Speicher gespeichert.

In meinem Fall brauche ich keine dynamische DB-Erstellung basierend auf POCOs.

Ist es möglich, Sugar ORM mit einer bereits vorhandenen SQLite-DB zu verwenden, die auf einen benutzerdefinierten Pfad verweist, wenn alle POCO-Klassenfelder mit der Tabellenstruktur übereinstimmen?

    
AlexVPerl 15.06.2014, 00:34
quelle

3 Antworten

4
  1. Zunächst bin ich nicht mit der Idee einverstanden, die Sugar ausdehnt die App-Klasse. Was ist, wenn ich andere Aufgaben ausführen muss? vor dem App-Start ?! Also lasst uns SugarApp mit unseren eigenen erweitern AppClass registriert dann den appClass-Namen in Manifest. Außerdem ist dies der richtige Ort, um das erste Mal zu init db zu glauben.

    %Vor%
  2. Manifest: android: name="com.myPackageName.MyAppStartClass"

  3. Stellen Sie sicher, dass Sie zuerst eine leere Datenbank erstellen, andernfalls erhalten Sie einen Fehler von FileOutputStream () und dbPath = /data/data/com.myPackageName/databases/myDb.db

    SQLiteDatabase db = Kontext.OpenOrCreateDatabase (costs.dbName, context.MODE_PRIVATE, null);

    db.close ();

  4. Stellen Sie sicher, dass Ihr vorhandenes Datenbankschema eine Primärschlüsselspalten-ID hat. Oh ja! Sugar erkennt ID nur als Primärschlüssel zum Abrufen von Daten.

  5. Wenn Sie vorhandene Tabellen verwenden möchten, geben Sie T nicht an, wenn Sie SugarRecord erweitern UND Sugar als Modul hinzufügen müssen und Ihr Projekt davon abhängt!

    %Vor%

6.Wenn Sie vorhandene Tabellen verwenden möchten. Beachten Sie, dass Sugar nach UPPERCASE-Spaltennamen sucht. Wenn Ihre vorhandenen Tabellenspaltennamen also Kleinbuchstaben sind, werden Sie niemals vorhandene Daten daraus erhalten!

7. Das führt mich zu einer widerwilligen Schlussfolgerung: Sugar ist großartig, wenn Sie db von Grund auf neu starten und damit db und Tabellen für Sie generieren. Aber nicht so, wenn Sie bereits eine existierende Datenbank mit Daten darin hatten.

    
Yini 24.05.2015 03:13
quelle
3

Die Lösung, die ich gefunden habe, bestand darin, Ihre db-Datei in den Ordner "Assets" zu stellen. Anstatt eine .csv-Datei zu lesen, um eine .db-Datei zu erstellen (wenn Sie die richtige Aktivität starten), versuchen Sie zuerst, zu überprüfen, ob sich die .db-Datei in /data/data/file.db befindet. Wenn nicht, kopieren Sie sie Ihr Asset-Ordner zu diesem Pfad. Mit dem nächsten Code können Sie alles machen:

%Vor%     
Fer 30.04.2015 16:27
quelle
1

Ich habe es noch nicht ausprobiert. Wenn Sie jedoch Ihre Datenbankdatei in den Ordner /data/data//db_name.db kopieren und denselben db_name & amp; DB-Version in der Zucker-Konfiguration in Manifest, sollte es nur abholen.

    
Satya 17.06.2014 17:47
quelle

Tags und Links