web-dev-qa-db-de.com

Verwenden Sie eine lokale Datenbank in Xamarin

Ich habe begonnen, das Xamarin-Plugin für Visual Studio zu verwenden, um eine Android App zu erstellen.

Ich habe eine lokale SQL-Datenbank und möchte sie aufrufen, um Daten anzuzeigen. Ich verstehe nicht, wie ich das machen kann. Ist es möglich?

39
user2631662

Nachdem ich dachte, dies sei eine triviale Sache, wurde ich als falsch erwiesen, als ich versuchte, ein schnelles Testprojekt einzurichten. Dieser Beitrag enthält eine vollständige Anleitung zum Einrichten einer Datenbank für eine Android App in Xamarin, die als Referenz für zukünftige Xamarin-Benutzer nützlich sein wird.

Auf einen Blick:

  1. Fügen Sie Ihrem Projekt Sqlite.cs hinzu.
  2. Fügen Sie Ihre Datenbankdatei als Asset hinzu.
  3. Stellen Sie Ihre Datenbankdatei so ein, dass sie als AndroidAsset erstellt wird.
  4. Kopieren Sie die Datenbankdatei manuell aus Ihrem apk in ein anderes Verzeichnis.
  5. Öffnen Sie eine Datenbankverbindung mit Sqlite.SqliteConnection.
  6. Bedienen Sie die Datenbank mit Sqlite.

Einrichten einer lokalen Datenbank für ein Xamarin Android Projekt

1. Fügen Sie Ihrem Projekt Sqlite.cs hinzu.

Beginnen Sie, indem Sie dieses Repository aufrufen und Sqlite.cs herunterladen. Dadurch wird die SQLite-API bereitgestellt, mit der Sie Abfragen für Ihre Datenbank ausführen können. Fügen Sie die Datei Ihrem Projekt als Quelldatei hinzu.

2. Fügen Sie DB als Asset hinzu.

Als nächstes holen Sie sich Ihre Datenbank und kopieren Sie sie in das Verzeichnis Assets Ihres Android Projektes und importieren Sie sie dann in Ihr Projekt, so dass sie unter den Assets erscheint Ordner in Ihrer Lösung:

enter image description here

Ich verwende das Datenbankbeispiel Chinook_Sqlite.sqlite, das in diesem Beispiel von diese Site in db.sqlite umbenannt wurde.

3. Legen Sie fest, dass die Datenbank als AndroidAsset erstellt wird.

Klicken Sie mit der rechten Maustaste auf die DB-Datei und legen Sie fest, dass die Aktion AndroidAsset erstellt wird. Dadurch wird sichergestellt, dass es in das Assets-Verzeichnis der APK aufgenommen wird.

enter image description here

4. Kopieren Sie die Datenbank manuell aus Ihrem APK.

Da die Datenbank als Asset enthalten ist (in der APK enthalten), müssen Sie sie extrahieren.

Sie können dies mit dem folgenden Code tun:

string dbName = "db.sqlite";
string dbPath = Path.Combine (Android.OS.Environment.ExternalStorageDirectory.ToString (), dbName);
// Check if your DB has already been extracted.
if (!File.Exists(dbPath))
{
    using (BinaryReader br = new BinaryReader(Android.App.Application.Context.Assets.Open(dbName)))
    {
        using (BinaryWriter bw = new BinaryWriter(new FileStream(dbPath, FileMode.Create)))
        {
            byte[] buffer = new byte[2048];
            int len = 0;
            while ((len = br.Read(buffer, 0, buffer.Length)) > 0)
            {
                bw.Write (buffer, 0, len);
            }
        }
    }
}

Dadurch wird die DB als Binärdatei aus dem APK extrahiert und im externen Speicherpfad des Systems abgelegt. Realistisch kann die DB gehen, wohin Sie wollen, ich habe gerade beschlossen, es hier zu kleben.

Ich habe auch gelesen, dass Android einen Datenbankordner hat, in dem Datenbanken direkt gespeichert werden; ich konnte es nicht zum Laufen bringen, also habe ich gerade diese Methode zur Verwendung einer vorhandenen Datenbank ausgeführt.

5. Öffnen Sie die DB-Verbindung.

Öffnen Sie nun über die Sqlite.SqliteConnection-Klasse eine Verbindung zur DB:

using (var conn = new SQLite.SQLiteConnection(dbPath))
{
        // Do stuff here...
}

6. Bedienen Sie den DB.

Da Sqlite.net ein ORM ist, können Sie die Datenbank mit Ihren eigenen Datentypen bearbeiten:

public class Album
{
    [PrimaryKey, AutoIncrement]
    public int AlbumId { get; set; }
    public string Title { get; set; }
    public int ArtistId { get; set; }
}

// Other code...

using (var conn = new SQLite.SQLiteConnection(dbPath))
{
    var cmd = new SQLite.SQLiteCommand (conn);
    cmd.CommandText = "select * from Album";
    var r = cmd.ExecuteQuery<Album> ();

    Console.Write (r);
}

Zusammenfassung

Und so fügen Sie Ihrer Xamarin-Lösung für Android eine vorhandene SQLite-Datenbank hinzu! Weitere Informationen finden Sie in den Abschnitten Beispiele , die in der Sqlite.net-Bibliothek enthalten sind, Komponententests und Beispiele in der Xamarin-Dokumentation.

63
matthewrdev

Hier ist der, den ich benutze und der funktioniert

  • installieren Sie das Sqlite-Plugin
  • erstellen Sie eine Schnittstelle für den Zugriff auf verschiedene Plattformdienste
  • erstellen Sie ein Modell für die Tabelle
  • implementieren Sie die zuvor erstellte Schnittstelle auf allen Plattformen, die Sie verwenden möchten
  • verwenden Sie das Plugin zum Erstellen, Abrufen, Einfügen usw. auf Ihrem Tisch

weitere Informationen finden Sie unter this

1
Xamassassin