Speichern von Daten in einer lokalen SQLite.NET-DatenbankStore data in a local SQLite.NET database

Beispiel herunterladen Das Beispiel herunterladenDownload Sample Download the sample

In diesem Schnellstart lernen Sie, wie Sie:In this quickstart, you will learn how to:

  • Daten lokal in einer SQLite.NET-Datenbank speichern.Store data locally in a SQLite.NET database.

In dieser Schnellstartanleitung erfahren Sie, wie Sie Daten aus einer Xamarin.Forms-Shellanwendung in einer lokalen SQLite.NET-Datenbank speichern.The quickstart walks through how to store data in a local SQLite.NET database, from a Xamarin.Forms Shell application. Die fertige Anwendung wird unten gezeigt:The final application is shown below:

Notizenseite NotizeneintragsseiteNotes Page Note Entry Page

VoraussetzungenPrerequisites

Sie sollten den vorherigen Schnellstart erfolgreich abgeschlossen haben, bevor Sie mit diesem Schnellstart beginnen.You should successfully complete the previous quickstart before attempting this quickstart. Alternativ können Sie auch das letzte Schnellstartbeispiel herunterladen und als Startpunkt für diesen Schnellstart verwenden.Alternatively, download the previous quickstart sample and use it as the starting point for this quickstart.

Aktualisieren der App mit Visual StudioUpdate the app with Visual Studio

  1. Starten Sie Visual Studio, und öffnen Sie die Projektmappe „Notizen“.Launch Visual Studio and open the Notes solution.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe Notes, und wählen Sie NuGet-Pakete für Projektmappe verwalten… aus:In Solution Explorer, right-click the Notes solution and select Manage NuGet Packages for Solution...:

    NuGet-Pakete verwalten

  3. Wählen Sie im NuGet-Paket-Manager die Registerkarte Durchsuchen aus, und suchen Sie nach dem NuGet-Paket sqlite-net-pcl.In the NuGet Package Manager, select the Browse tab, and search for the sqlite-net-pcl NuGet package.

    Warnung

    Es gibt eine Reihe von NuGet-Paketen mit ähnlichen Namen.There are many NuGet packages with similar names. Das richtige Paket verfügt über die folgenden Attribute:The correct package has these attributes:

    Trotz des Paketnamens kann dieses NuGet-Paket in .NET Standard-Projekten verwendet werden.Despite the package name, this NuGet package can be used in .NET Standard projects.

    Wählen Sie im NuGet-Paket-Manager das richtige sqlite-net-pcl-Paket aus, aktivieren Sie das Kontrollkästchen Projekt, und klicken Sie auf die Schaltfläche Installieren, um es dem Projekt hinzuzufügen:In the NuGet Package Manager, select the correct sqlite-net-pcl package, check the Project checkbox, and click the Install button to add it to the solution:

    Auswählen von „sqlite-net-pcl“

    Mit diesem Paket werden Datenbankvorgänge in die Anwendung einbezogen. Es wird jedem Projekt in der Projektmappe hinzugefügt.This package will be used to incorporate database operations into the application, and will be added to every project in the solution.

    Schließen Sie den NuGet-Paket-Manager.Close the NuGet Package Manager.

  4. Öffnen Sie im Projektmappen-Explorer im Projekt Notizen die Datei Note.cs im Ordner Modelle, und ersetzen Sie den vorhandenen Code durch den folgenden Code:In Solution Explorer, in the Notes project, open Note.cs in the Models folder and replace the existing code with the following code:

    using System;
    using SQLite;
    
    namespace Notes.Models
    {
        public class Note
        {
            [PrimaryKey, AutoIncrement]
            public int ID { get; set; }
            public string Text { get; set; }
            public DateTime Date { get; set; }
        }
    }
    

    Diese Klasse definiert ein Note-Modell, das Daten über jede Notiz in der Anwendung speichert.This class defines a Note model that will store data about each note in the application. Die ID-Eigenschaft wird mit den Attributen PrimaryKey und AutoIncrement markiert, um sicherzustellen, dass jede Note-Instanz in der SQLite.NET-Datenbank über eine eindeutige ID verfügt, die von SQLite.NET vergeben wird.The ID property is marked with PrimaryKey and AutoIncrement attributes to ensure that each Note instance in the SQLite.NET database will have a unique id provided by SQLite.NET.

    Speichern Sie die Änderungen an Note.cs, indem Sie STRG+S drücken.Save the changes to Note.cs by pressing CTRL+S.

    Warnung

    Die Anwendung wird derzeit aufgrund von Fehlern, die in späteren Schritten korrigiert werden, nicht erstellt.The application will not currently build due to errors that will be fixed in subsequent steps.

  5. Fügen Sie im Projektmappen-Explorer einen neuen Ordner namens Daten zum Projekt Notizen hinzu.In Solution Explorer, add a new folder named Data to the Notes project.

  6. Fügen Sie im Projektmappen-Explorer im Projekt Notizen dem Ordner Daten eine neue Klasse mit dem Namen NoteDatabase hinzu.In Solution Explorer, in the Notes project, add a new class named NoteDatabase to the Data folder.

  7. Ersetzen Sie in NoteDatabase.cs den vorhandenen Code durch den folgenden Code:In NoteDatabase.cs, replace the existing code with the following code:

    using System.Collections.Generic;
    using System.Threading.Tasks;
    using SQLite;
    using Notes.Models;
    
    namespace Notes.Data
    {
        public class NoteDatabase
        {
            readonly SQLiteAsyncConnection database;
    
            public NoteDatabase(string dbPath)
            {
                database = new SQLiteAsyncConnection(dbPath);
                database.CreateTableAsync<Note>().Wait();
            }
    
            public Task<List<Note>> GetNotesAsync()
            {
                //Get all notes.
                return database.Table<Note>().ToListAsync();
            }
    
            public Task<Note> GetNoteAsync(int id)
            {
                // Get a specific note.
                return database.Table<Note>()
                                .Where(i => i.ID == id)
                                .FirstOrDefaultAsync();
            }
    
            public Task<int> SaveNoteAsync(Note note)
            {
                if (note.ID != 0)
                {
                    // Update an existing note.
                    return database.UpdateAsync(note);
                }
                else
                {
                    // Save a new note.
                    return database.InsertAsync(note);
                }
            }
    
            public Task<int> DeleteNoteAsync(Note note)
            {
                // Delete a note.
                return database.DeleteAsync(note);
            }
        }
    }
    

    Diese Klasse enthält Code, mit dem die Datenbank erstellt wird und Daten aus ihr gelesen bzw. in sie geschrieben und aus ihr gelöscht werden.This class contains code to create the database, read data from it, write data to it, and delete data from it. Im Code werden asynchrone SQLite.NET-APIs verwendet, mit denen Datenbankvorgänge in Hintergrundthreads verschoben werden.The code uses asynchronous SQLite.NET APIs that move database operations to background threads. Außerdem akzeptiert der NoteDatabase-Konstruktor den Pfad der Datenbankdatei als Argument.In addition, the NoteDatabase constructor takes the path of the database file as an argument. Dieser Pfad wird im nächsten Schritt von der App-Klasse bereitgestellt.This path will be provided by the App class in the next step.

    Speichern Sie die Änderungen an NoteDatabase.cs, indem Sie STRG+S drücken.Save the changes to NoteDatabase.cs by pressing CTRL+S.

    Warnung

    Die Anwendung wird derzeit aufgrund von Fehlern, die in späteren Schritten korrigiert werden, nicht erstellt.The application will not currently build due to errors that will be fixed in subsequent steps.

  8. Erweitern Sie im Projektmappen-Explorer im Projekt Notes den Eintrag App.xaml, und doppelklicken Sie auf die Datei App.xaml.cs, um sie zu öffnen.In Solution Explorer, in the Notes project, expand App.xaml and double-click App.xaml.cs to open it. Ersetzen Sie dann den vorhandenen Code durch folgenden Code:Then replace the existing code with the following code:

    using System;
    using System.IO;
    using Notes.Data;
    using Xamarin.Forms;
    
    namespace Notes
    {
        public partial class App : Application
        {
            static NoteDatabase database;
    
            // Create the database connection as a singleton.
            public static NoteDatabase Database
            {
                get
                {
                    if (database == null)
                    {
                        database = new NoteDatabase(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Notes.db3"));
                    }
                    return database;
                }
            }
    
            public App()
            {
                InitializeComponent();
                MainPage = new AppShell();
            }
    
            protected override void OnStart()
            {
            }
    
            protected override void OnSleep()
            {
            }
    
            protected override void OnResume()
            {
            }
        }
    }
    

    Dieser Code definiert eine Database-Eigenschaft, die eine neue NoteDatabase-Instanz als Singleton erzeugt, wobei der Dateiname der Datenbank als Argument an den NoteDatabase-Konstruktor übergeben wird.This code defines a Database property that creates a new NoteDatabase instance as a singleton, passing in the filename of the database as the argument to the NoteDatabase constructor. Durch das Bereitstellen der Datenbank als Singleton kann eine einzelne Datenbankverbindung erstellt werden, die während der Ausführung der App offen bleibt, sodass der Aufwand für das Öffnen und Schließen der Datenbank beim Ausführen des Datenbankvorgangs vermieden wird.The advantage of exposing the database as a singleton is that a single database connection is created that's kept open while the application runs, therefore avoiding the expense of opening and closing the database file each time a database operation is performed.

    Speichern Sie die Änderungen an App.xaml.cs, indem Sie STRG+S drücken.Save the changes to App.xaml.cs by pressing CTRL+S.

    Warnung

    Die Anwendung wird derzeit aufgrund von Fehlern, die in späteren Schritten korrigiert werden, nicht erstellt.The application will not currently build due to errors that will be fixed in subsequent steps.

  9. Erweitern Sie im Projektmappen-Explorer im Projekt Notes den Eintrag NotesPage.xaml im Ordner Ansichten, und öffnen Sie die Datei NotesPage.xaml.cs.In Solution Explorer, in the Notes project, expand NotesPage.xaml in the Views folder and open NotesPage.xaml.cs. Ersetzen Sie dann die OnAppearing- und OnSelectionChanged-Methoden durch folgenden Code:Then replace the OnAppearing and OnSelectionChanged methods with the following code:

    protected override async void OnAppearing()
    {
        base.OnAppearing();
    
        // Retrieve all the notes from the database, and set them as the
        // data source for the CollectionView.
        collectionView.ItemsSource = await App.Database.GetNotesAsync();
    }
    
    async void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.CurrentSelection != null)
        {
            // Navigate to the NoteEntryPage, passing the ID as a query parameter.
            Note note = (Note)e.CurrentSelection.FirstOrDefault();
            await Shell.Current.GoToAsync($"{nameof(NoteEntryPage)}?{nameof(NoteEntryPage.ItemId)}={note.ID.ToString()}");
        }
    }    
    

    Die OnAppearing-Methode füllt die CollectionView mit allen Notizen auf, die in der Datenbank gespeichert sind.The OnAppearing method populates the CollectionView with any notes stored in the database. Die OnSelectionChanged-Methode navigiert zur NoteEntryPage und übergibt dabei die ID-Eigenschaft des ausgewählten Note-Objekts als Abfrageparameter.The OnSelectionChanged method navigates to the NoteEntryPage, passing the ID property of the selected Note object as a query parameter.

    Speichern Sie die Änderungen an NotesPage.xaml.cs, indem Sie STRG+S drücken.Save the changes to NotesPage.xaml.cs by pressing CTRL+S.

    Warnung

    Die Anwendung wird derzeit aufgrund von Fehlern, die in späteren Schritten korrigiert werden, nicht erstellt.The application will not currently build due to errors that will be fixed in subsequent steps.

  10. Erweitern Sie im Projektmappen-Explorer den Eintrag NoteEntryPage.xaml im Ordner Ansichten, und öffnen Sie die Datei NoteEntryPage.xaml.cs.In Solution Explorer, expand NoteEntryPage.xaml in the Views folder and open NoteEntryPage.xaml.cs. Ersetzen Sie dann die Methoden LoadNote, OnSaveButtonClicked und OnDeleteButtonClicked durch folgenden Code:Then replace the LoadNote, OnSaveButtonClicked, and OnDeleteButtonClicked methods with the following code:

    async void LoadNote(string itemId)
    {
        try
        {
            int id = Convert.ToInt32(itemId);
            // Retrieve the note and set it as the BindingContext of the page.
            Note note = await App.Database.GetNoteAsync(id);
            BindingContext = note;
        }
        catch (Exception)
        {
            Console.WriteLine("Failed to load note.");
        }
    }
    
    async void OnSaveButtonClicked(object sender, EventArgs e)
    {
        var note = (Note)BindingContext;
        note.Date = DateTime.UtcNow;
        if (!string.IsNullOrWhiteSpace(note.Text))
        {
            await App.Database.SaveNoteAsync(note);
        }
    
        // Navigate backwards
        await Shell.Current.GoToAsync("..");
    }
    
    async void OnDeleteButtonClicked(object sender, EventArgs e)
    {
        var note = (Note)BindingContext;
        await App.Database.DeleteNoteAsync(note);
    
        // Navigate backwards
        await Shell.Current.GoToAsync("..");
    }
    

    Die NoteEntryPage verwendet die LoadNote-Methode, um die Notiz aus der Datenbank abzurufen, deren ID als Abfrageparameter an die Seite übergeben wurde, und speichert sie als Note-Objekt im BindingContext der Seite.The NoteEntryPage uses the LoadNote method to retrieve the note from the database, whose ID was passed as a query parameter to the page, and store it as a Note object in the BindingContext of the page. Wenn der OnSaveButtonClicked-Ereignishandler ausgeführt wird, wird die Note-Instanz in der Datenbank gespeichert, und die Anwendung navigiert zur vorherigen Seite zurück.When the OnSaveButtonClicked event handler is executed, the Note instance is saved to the database and the application navigates back to the previous page. Wenn der OnDeleteButtonClicked-Ereignishandler ausgeführt wird, wird die Note-Instanz aus der Datenbank gelöscht, und die Anwendung navigiert zur vorherigen Seite zurück.When the OnDeleteButtonClicked event handler is executed, the Note instance is deleted from the database and the application navigates back to the previous page.

    Speichern Sie die Änderungen an NoteEntryPage.xaml.cs, indem Sie STRG+S drücken.Save the changes to NoteEntryPage.xaml.cs by pressing CTRL+S.

  11. Erstellen Sie das Projekt auf jeder Plattform, und führen Sie dieses aus.Build and run the project on each platform. Weitere Informationen finden Sie unter Erstellen des Schnellstarts.For more information, see Building the quickstart.

    Klicken Sie auf der NotesPage auf die Schaltfläche Hinzufügen, um zur NoteEntryPage zu navigieren und eine Notiz einzugeben.On the NotesPage press the Add button to navigate to the NoteEntryPage and enter a note. Nach dem Speichern der Notiz navigiert die Anwendung zurück zur Eigenschaft NotesPage.After saving the note the application will navigate back to the NotesPage.

    Geben Sie verschiedene Notizen unterschiedlicher Länge ein, um das Verhalten der Anwendung zu beobachten.Enter several notes, of varying length, to observe the application behavior. Schließen Sie die Anwendung, und starten Sie sie neu, um sicherzustellen, dass die von Ihnen eingegebenen Notizen in der Datenbank gespeichert wurden.Close the application and re-launch it to ensure that the notes you entered were saved to the database.

Aktualisieren der App mit Visual Studio für MacUpdate the app with Visual Studio for Mac

  1. Starten Sie Visual Studio für Mac, und öffnen Sie die Lösungsmappe „Notes“.Launch Visual Studio for Mac and open the Notes solution.

  2. Klicken Sie im Lösungspad mit der rechten Maustaste auf die Projektmappe Notes, und wählen Sie NuGet-Pakete verwalten... aus:In the Solution Pad, right-click the Notes solution and select Manage NuGet Packages...:

    NuGet-Pakete verwalten

  3. Wählen Sie im Dialogfeld NuGet-Pakete verwalten die Registerkarte Durchsuchen aus, und suchen Sie nach dem NuGet-Paket sqlite-net-pcl.In the Manage NuGet Packages dialog, select the Browse tab, and search for the sqlite-net-pcl NuGet package.

    Warnung

    Es gibt eine Reihe von NuGet-Paketen mit ähnlichen Namen.There are many NuGet packages with similar names. Das richtige Paket verfügt über die folgenden Attribute:The correct package has these attributes:

    Trotz des Paketnamens kann dieses NuGet-Paket in .NET Standard-Projekten verwendet werden.Despite the package name, this NuGet package can be used in .NET Standard projects.

    Wählen Sie im Dialogfeld NuGet-Pakete verwalten das NuGet-Paket sqlite-net-pcl aus, und klicken Sie auf die Schaltfläche Paket hinzufügen, um es der Projektmappe hinzuzufügen:In the Manage NuGet Packages dialog, select the sqlite-net-pcl package, and click the Add Package button to add it to the solution:

    Auswählen von „sqlite-net-pcl“

    Mit diesem Paket können Datenbankvorgänge in der Anwendung verwendet werden.This package will be used to incorporate database operations into the application.

  4. Stellen Sie im Dialogfeld Projekte auswählen sicher, dass jedes Kontrollkästchen aktiviert ist, und klicken Sie auf die Schaltfläche OK:In the Select Projects dialog, ensure that every checkbox is checked and press the Ok button:

    Hinzufügen des Pakets zu allen Projekten

    Dadurch wird das NuGet-Paket zu jedem Projekt in der Projektmappe hinzugefügt.This will add the NuGet package to every project in the solution.

  5. Öffnen Sie im Lösungspad im Projekt Notizen die Datei Note.cs im Ordner Modelle, und ersetzen Sie den vorhandenen Code durch den folgenden Code:In the Solution Pad, in the Notes project, open Note.cs in the Models folder and replace the existing code with the following code:

    using System;
    using SQLite;
    
    namespace Notes.Models
    {
        public class Note
        {
            [PrimaryKey, AutoIncrement]
            public int ID { get; set; }
            public string Text { get; set; }
            public DateTime Date { get; set; }
        }
    }
    

    Diese Klasse definiert ein Note-Modell, das Daten über jede Notiz in der Anwendung speichert.This class defines a Note model that will store data about each note in the application. Die ID-Eigenschaft wird mit den Attributen PrimaryKey und AutoIncrement markiert, um sicherzustellen, dass jede Note-Instanz in der SQLite.NET-Datenbank über eine eindeutige ID verfügt, die von SQLite.NET vergeben wird.The ID property is marked with PrimaryKey and AutoIncrement attributes to ensure that each Note instance in the SQLite.NET database will have a unique id provided by SQLite.NET.

    Speichern Sie die Änderungen an Note.cs, indem Sie auf Datei > Speichern klicken (oder indem Sie ⌘+S drücken).Save the changes to Note.cs by choosing File > Save (or by pressing ⌘ + S).

    Warnung

    Die Anwendung wird derzeit aufgrund von Fehlern, die in späteren Schritten korrigiert werden, nicht erstellt.The application will not currently build due to errors that will be fixed in subsequent steps.

  6. Fügen Sie im Lösungspad einen neuen Ordner namens Daten zum Projekt Notizen hinzu.In the Solution Pad, add a new folder named Data to the Notes project.

  7. Fügen Sie im Lösungspad im Projekt Notizen dem Ordner Daten eine neue Klasse mit dem Namen NoteDatabase hinzu.In the Solution Pad, in the Notes project, add a new class named NoteDatabase to the Data folder.

  8. Ersetzen Sie in NoteDatabase.cs den vorhandenen Code durch den folgenden Code:In NoteDatabase.cs, replace the existing code with the following code:

    using System.Collections.Generic;
    using System.Threading.Tasks;
    using SQLite;
    using Notes.Models;
    
    namespace Notes.Data
    {
        public class NoteDatabase
        {
            readonly SQLiteAsyncConnection database;
    
            public NoteDatabase(string dbPath)
            {
                database = new SQLiteAsyncConnection(dbPath);
                database.CreateTableAsync<Note>().Wait();
            }
    
            public Task<List<Note>> GetNotesAsync()
            {
                //Get all notes.
                return database.Table<Note>().ToListAsync();
            }
    
            public Task<Note> GetNoteAsync(int id)
            {
                // Get a specific note.
                return database.Table<Note>()
                                .Where(i => i.ID == id)
                                .FirstOrDefaultAsync();
            }
    
            public Task<int> SaveNoteAsync(Note note)
            {
                if (note.ID != 0)
                {
                    // Update an existing note.
                    return database.UpdateAsync(note);
                }
                else
                {
                    // Save a new note.
                    return database.InsertAsync(note);
                }
            }
    
            public Task<int> DeleteNoteAsync(Note note)
            {
                // Delete a note.
                return database.DeleteAsync(note);
            }
        }
    }
    

    Diese Klasse enthält Code, mit dem die Datenbank erstellt wird und Daten aus ihr gelesen bzw. in sie geschrieben und aus ihr gelöscht werden.This class contains code to create the database, read data from it, write data to it, and delete data from it. Im Code werden asynchrone SQLite.NET-APIs verwendet, mit denen Datenbankvorgänge in Hintergrundthreads verschoben werden.The code uses asynchronous SQLite.NET APIs that move database operations to background threads. Außerdem akzeptiert der NoteDatabase-Konstruktor den Pfad der Datenbankdatei als Argument.In addition, the NoteDatabase constructor takes the path of the database file as an argument. Dieser Pfad wird im nächsten Schritt von der App-Klasse bereitgestellt.This path will be provided by the App class in the next step.

    Speichern Sie die Änderungen an NoteDatabase.cs, indem Sie auf Datei > Speichern klicken (oder indem Sie ⌘+S drücken).Save the changes to NoteDatabase.cs by choosing File > Save (or by pressing ⌘ + S).

    Warnung

    Die Anwendung wird derzeit aufgrund von Fehlern, die in späteren Schritten korrigiert werden, nicht erstellt.The application will not currently build due to errors that will be fixed in subsequent steps.

  9. Erweitern Sie im Lösungspad im Projekt Notes den Eintrag App.xaml, und doppelklicken Sie auf die Datei App.xaml.cs, um sie zu öffnen.In the Solution Pad, in the Notes project, expand App.xaml and double-click App.xaml.cs to open it. Ersetzen Sie dann den vorhandenen Code durch folgenden Code:Then replace the existing code with the following code:

    using System;
    using System.IO;
    using Notes.Data;
    using Xamarin.Forms;
    
    namespace Notes
    {
        public partial class App : Application
        {
            static NoteDatabase database;
    
            // Create the database connection as a singleton.
            public static NoteDatabase Database
            {
                get
                {
                    if (database == null)
                    {
                        database = new NoteDatabase(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Notes.db3"));
                    }
                    return database;
                }
            }
    
            public App()
            {
                InitializeComponent();
                MainPage = new AppShell();
            }
    
            protected override void OnStart()
            {
            }
    
            protected override void OnSleep()
            {
            }
    
            protected override void OnResume()
            {
            }
        }
    }
    

    Dieser Code definiert eine Database-Eigenschaft, die eine neue NoteDatabase-Instanz als Singleton erzeugt, wobei der Dateiname der Datenbank als Argument an den NoteDatabase-Konstruktor übergeben wird.This code defines a Database property that creates a new NoteDatabase instance as a singleton, passing in the filename of the database as the argument to the NoteDatabase constructor. Durch das Bereitstellen der Datenbank als Singleton kann eine einzelne Datenbankverbindung erstellt werden, die während der Ausführung der App offen bleibt, sodass der Aufwand für das Öffnen und Schließen der Datenbank beim Ausführen des Datenbankvorgangs vermieden wird.The advantage of exposing the database as a singleton is that a single database connection is created that's kept open while the application runs, therefore avoiding the expense of opening and closing the database file each time a database operation is performed.

    Speichern Sie die Änderungen an App.xaml.cs, indem Sie auf Datei > Speichern klicken (oder indem Sie ⌘+S drücken).Save the changes to App.xaml.cs by choosing File > Save (or by pressing ⌘ + S).

    Warnung

    Die Anwendung wird derzeit aufgrund von Fehlern, die in späteren Schritten korrigiert werden, nicht erstellt.The application will not currently build due to errors that will be fixed in subsequent steps.

  10. Erweitern Sie im Lösungspad im Projekt Notes den Eintrag NotesPage.xaml im Ordner Ansichten, und öffnen Sie die Datei NotesPage.xaml.cs.In the Solution Pad, in the Notes project, expand NotesPage.xaml in the Views folder and open NotesPage.xaml.cs. Ersetzen Sie dann die OnAppearing- und OnSelectionChanged-Methoden durch folgenden Code:Then replace the OnAppearing and OnSelectionChanged methods with the following code:

    protected override async void OnAppearing()
    {
        base.OnAppearing();
    
        // Retrieve all the notes from the database, and set them as the
        // data source for the CollectionView.
        collectionView.ItemsSource = await App.Database.GetNotesAsync();
    }
    
    async void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.CurrentSelection != null)
        {
            // Navigate to the NoteEntryPage, passing the ID as a query parameter.
            Note note = (Note)e.CurrentSelection.FirstOrDefault();
            await Shell.Current.GoToAsync($"{nameof(NoteEntryPage)}?{nameof(NoteEntryPage.ItemId)}={note.ID.ToString()}");
        }
    }    
    

    Die OnAppearing-Methode füllt die CollectionView mit allen Notizen auf, die in der Datenbank gespeichert sind.The OnAppearing method populates the CollectionView with any notes stored in the database. Die OnSelectionChanged-Methode navigiert zur NoteEntryPage und übergibt dabei die ID-Eigenschaft des ausgewählten Note-Objekts als Abfrageparameter.The OnSelectionChanged method navigates to the NoteEntryPage, passing the ID property of the selected Note object as a query parameter.

    Speichern Sie die Änderungen an NotePages.xaml.cs, indem Sie auf Datei > Speichern klicken (oder indem Sie ⌘+S drücken).Save the changes to NotesPage.xaml.cs by choosing File > Save (or by pressing ⌘ + S).

    Warnung

    Die Anwendung wird derzeit aufgrund von Fehlern, die in späteren Schritten korrigiert werden, nicht erstellt.The application will not currently build due to errors that will be fixed in subsequent steps.

  11. Erweitern Sie im Lösungspad den Eintrag NoteEntryPage.xaml im Ordner Ansichten, und öffnen Sie die Datei NoteEntryPage.xaml.cs.In the Solution Pad, expand NoteEntryPage.xaml in the Views folder and open NoteEntryPage.xaml.cs. Ersetzen Sie dann die Methoden LoadNote, OnSaveButtonClicked und OnDeleteButtonClicked durch folgenden Code:Then replace the LoadNote, OnSaveButtonClicked, and OnDeleteButtonClicked methods with the following code:

    async void LoadNote(string itemId)
    {
        try
        {
            int id = Convert.ToInt32(itemId);
            // Retrieve the note and set it as the BindingContext of the page.
            Note note = await App.Database.GetNoteAsync(id);
            BindingContext = note;
        }
        catch (Exception)
        {
            Console.WriteLine("Failed to load note.");
        }
    }
    
    async void OnSaveButtonClicked(object sender, EventArgs e)
    {
        var note = (Note)BindingContext;
        note.Date = DateTime.UtcNow;
        if (!string.IsNullOrWhiteSpace(note.Text))
        {
            await App.Database.SaveNoteAsync(note);
        }
    
        // Navigate backwards
        await Shell.Current.GoToAsync("..");
    }
    
    async void OnDeleteButtonClicked(object sender, EventArgs e)
    {
        var note = (Note)BindingContext;
        await App.Database.DeleteNoteAsync(note);
    
        // Navigate backwards
        await Shell.Current.GoToAsync("..");
    }
    

    Die NoteEntryPage verwendet die LoadNote-Methode, um die Notiz aus der Datenbank abzurufen, deren ID als Abfrageparameter an die Seite übergeben wurde, und speichert sie als Note-Objekt im BindingContext der Seite.The NoteEntryPage uses the LoadNote method to retrieve the note from the database, whose ID was passed as a query parameter to the page, and store it as a Note object in the BindingContext of the page. Wenn der OnSaveButtonClicked-Ereignishandler ausgeführt wird, wird die Note-Instanz in der Datenbank gespeichert, und die Anwendung navigiert zur vorherigen Seite zurück.When the OnSaveButtonClicked event handler is executed, the Note instance is saved to the database and the application navigates back to the previous page. Wenn der OnDeleteButtonClicked-Ereignishandler ausgeführt wird, wird die Note-Instanz aus der Datenbank gelöscht, und die Anwendung navigiert zur vorherigen Seite zurück.When the OnDeleteButtonClicked event handler is executed, the Note instance is deleted from the database and the application navigates back to the previous page.

    Speichern Sie die Änderungen an NoteEntryPage.xaml.cs, indem Sie auf Datei > Speichern klicken (oder indem Sie ⌘+S drücken).Save the changes to NoteEntryPage.xaml.cs by choosing File > Save (or by pressing ⌘ + S).

  12. Erstellen Sie das Projekt auf jeder Plattform, und führen Sie dieses aus.Build and run the project on each platform. Weitere Informationen finden Sie unter Erstellen des Schnellstarts.For more information, see Building the quickstart.

    Klicken Sie auf der NotesPage auf die Schaltfläche Hinzufügen, um zur NoteEntryPage zu navigieren und eine Notiz einzugeben.On the NotesPage press the Add button to navigate to the NoteEntryPage and enter a note. Nach dem Speichern der Notiz navigiert die Anwendung zurück zur Eigenschaft NotesPage.After saving the note the application will navigate back to the NotesPage.

    Geben Sie verschiedene Notizen unterschiedlicher Länge ein, um das Verhalten der Anwendung zu beobachten.Enter several notes, of varying length, to observe the application behavior. Schließen Sie die Anwendung, und starten Sie sie neu, um sicherzustellen, dass die von Ihnen eingegebenen Notizen in der Datenbank gespeichert wurden.Close the application and re-launch it to ensure that the notes you entered were saved to the database.

Nächste SchritteNext steps

In diesem Schnellstart haben Sie gelernt, wie Sie:In this quickstart, you learned how to:

  • Daten lokal in einer SQLite.NET-Datenbank speichern.Store data locally in a SQLite.NET database.

Fahren Sie mit der nächsten Schnellstartanleitung fort, um die Anwendung mit XAML-Formatvorlagen zu gestalten.Continue to the next quickstart to style the application with XAML styles.