İngilizce dilinde oku

Aracılığıyla paylaş

Xamarin.Forms Yerel Veritabanı Öğreticisi

Veri erişim sınıflarını oluşturma

Bu alıştırmada kişilerle ilgili verileri veritabanında kalıcı hale getirmek için kullanılacak olan LocalDatabaseTutorial projesine veri erişim sınıfları ekleyeceksiniz.

  1. Çözüm Gezgini'ndeki LocalDatabaseTutorial projesine Person adlı yeni bir sınıf ekleyin. Ardından Person.cs içindeki şablon kodunun tamamını silip aşağıdaki kodu ekleyin:

    using SQLite;
    
    namespace LocalDatabaseTutorial
    {
        public class Person
        {
            [PrimaryKey, AutoIncrement]
            public int ID { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }
    }
    

    Bu kod, kişilerle ilgili verileri uygulamada depolayacak olan bir Person sınıfını tanımlar. ID özelliği, veritabanındaki her bir Person örneğinin SQLite.NET tarafından sağlanan benzersiz bir kimliğe sahip olmasını sağlamak için PrimaryKey ve AutoIncrement öznitelikleriyle işaretlenmiştir.

  2. Çözüm Gezgini'ndeki LocalDatabaseTutorial projesine Database adlı yeni bir sınıf ekleyin. Ardından Database.cs içindeki şablon kodunun tamamını silip aşağıdaki kodu ekleyin:

    using System.Collections.Generic;
    using System.Threading.Tasks;
    using SQLite;
    
    namespace LocalDatabaseTutorial
    {
        public class Database
        {
            readonly SQLiteAsyncConnection _database;
    
            public Database(string dbPath)
            {
                _database = new SQLiteAsyncConnection(dbPath);
                _database.CreateTableAsync<Person>().Wait();
            }
    
            public Task<List<Person>> GetPeopleAsync()
            {
                return _database.Table<Person>().ToListAsync();
            }
    
            public Task<int> SavePersonAsync(Person person)
            {
                return _database.InsertAsync(person);
            }
        }
    }
    

    Bu sınıf veritabanını oluşturmak, verileri okumak ve veri yazmak için kullanılacak kodu içerir. Kod, veritabanı işlemlerini arka plandaki iş parçacıklara taşıyan zaman uyumsuz SQLite.NET API'lerini kullanır. Ayrıca Database oluşturucusu, veritabanı dosyasının yolunu bir bağımsız değişken olarak alır. Bu yol, bir sonraki alıştırmada App sınıfı tarafından sağlanacaktır.

  3. Çözüm Gezgini'ndeki LocalDatabaseTutorial projesinde App.xaml bölümünü genişlettikten sonra App.xaml.cs dosyasına çift tıklayıp açın. Ardından App.xaml.cs içindeki şablon kodunun tamamını silip aşağıdaki kodu ekleyin:

    using System;
    using System.IO;
    using Xamarin.Forms;
    
    namespace LocalDatabaseTutorial
    {
        public partial class App : Application
        {
            static Database database;
    
            public static Database Database
            {
                get
                {
                    if (database == null)
                    {
                        database = new Database(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "people.db3"));
                    }
                    return database;
                }
            }
    
            public App()
            {
                InitializeComponent();
    
                MainPage = new MainPage();
            }
    
            protected override void OnStart()
            {
                // Handle when your app starts
            }
    
            protected override void OnSleep()
            {
                // Handle when your app sleeps
            }
    
            protected override void OnResume()
            {
                // Handle when your app resumes
            }
        }
    }
    

    Bu kod, tekil olarak yeni bir Database örneği oluşturan bir Database özelliğini tanımlar. Veritabanının depolanacağı yeri belirten yerel dosya yolu ve dosya adı, Database sınıf oluşturucusuna bağımsız değişken olarak geçirilir.

    Önemli

    Veritabanını tekil olarak belirtmenin avantajı, uygulama çalışırken tek bir veritabanı bağlantısının oluşturulup açık tutulması ve bu sayede her veritabanı işlemi gerçekleştirildiğinde veritabanı dosyasını açma ve kapatma gereksiniminin ortadan kaldırılmasıdır.

  4. Hata olmadığından emin olmak için çözümü derleyin.