Aracılığıyla paylaş


Özel SQLite sürümleri

Microsoft.Data.Sqlite, SQLitePCLRaw üzerine kuruludur. Paket kullanarak veya sağlayıcı yapılandırarak SQLitePCLRaw yerel SQLite kitaplığının özel sürümlerini kullanabilirsiniz.

Ürün demetleri

SQLitePCLRaw farklı platformlarda doğru bağımlılıkları sağlamayı kolaylaştıran, kolaylık tabanlı paket paketleri sağlar. Ana Microsoft.Data.Sqlite paket SQLitePCLRaw.bundle_e_sqlite3'i varsayılan olarak içeri alır. Farklı bir paket kullanmak istiyorsanız, kullanmak istediğiniz paket paketiyle birlikte Microsoft.Data.Sqlite.Core paketini yükleyin. Microsoft.Data.Sqlite tarafından paketler otomatik olarak başlatılır.

Paket Açıklama
SQLitePCLRaw.bundle_e_sqlite3 Tüm platformlarda SQLite'in tutarlı bir sürümünü sağlar. FTS4, FTS5, JSON1 ve R*Tree uzantılarını içerir. Bu varsayılan seçenektir.
SQLitePCLRaw.bundle_e_sqlcipher Resmi olmayan, açık kaynak derlemesini SQLCipher sağlar.
SQLitePCLRaw.bundle_green Aynısı, iOS'ta sistem SQLite kütüphanesini kullandığı durumlar hariç bundle_e_sqlite3 ile aynıdır.
SQLitePCLRaw.bundle_sqlite3 Sistem SQLite kitaplığını kullanır.
SQLitePCLRaw.bundle_winsqlite3 Windows 10'da sistem SQLite kitaplığını kullanır winsqlite3.dll.
SQLitePCLRaw.bundle_zetetic Zetetic'in resmi SQLCipher derlemelerini kullanır (dahil değil).

Örneğin, resmi olmayan açık kaynak derlemesini SQLCipher kullanmak için aşağıdaki komutları kullanın.

dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_e_sqlcipher

SQLitePCLRaw kullanılabilir sağlayıcılar

Bir pakete güvenmediğinizde, çekirdek derleme ile kullanılabilir SQLite sağlayıcılarını kullanabilirsiniz.

Sağlayıcı Açıklama
SQLitePCLRaw.provider.dynamic Sağlayıcı, dynamic özniteliklerini kullanmak yerine yerel kitaplığı yükler. Bu sağlayıcıyı kullanma hakkında daha fazla bilgi için dinamik sağlayıcıyı kullanma konusuna bakın.
SQLitePCLRaw.provider.e_sqlite3 e_sqlite3 varsayılan sağlayıcıdır.
SQLitePCLRaw.provider.e_sqlcipher Sağlayıcı e_sqlcipher gayriresmi olup desteklenmemektedir SQLCipher.
SQLitePCLRaw.provider.sqlite3 sqlite3 sağlayıcısı, iOS, macOS ve Linux için sistem tarafından sağlanan bir SQLite'dir.
SQLitePCLRaw.provider.sqlcipher Sağlayıcı sqlcipher, SQLCipher üzerindeki resmi Zetetic derlemeler içindir.
SQLitePCLRaw.provider.winsqlite3 Sağlayıcı winsqlite3 Windows 10 ortamları içindir.

Sağlayıcıyı sqlite3 kullanmak için aşağıdaki komutları kullanın:

dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.core
dotnet add package SQLitePCLRaw.provider.sqlite3

Paketler yüklendikten sonra sağlayıcıyı sqlite3 örneğe ayarlarsınız.

using Microsoft.Data.Sqlite;
using System;

namespace SqliteProviderSample
{
    class Program
    {
        static void Main()
        {
            SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_sqlite3());

            using var connection = new SqliteConnection();
            Console.WriteLine($"System SQLite version: {connection.ServerVersion}");
        }
    }
}

Dinamik sağlayıcıyı kullanma

Kendi SQLite derlemenizi, SQLitePCLRaw.provider.dynamic_cdecl paketini kullanarak kullanabilirsiniz. Bu durumda, yerel kütüphaneyi uygulamanızla birlikte dağıtmak sizin sorumluluğunuzdadır. Yerel kitaplıkları uygulamanızla dağıtmanın ayrıntıları, kullandığınız .NET platformuna ve çalışma zamanına bağlı olarak önemli ölçüde farklılık gösterir.

İlk olarak uygulamanız gerekir IGetFunctionPointer. .NET Core'da uygulama aşağıdaki gibidir:

class NativeLibraryAdapter : IGetFunctionPointer
{
    readonly IntPtr _library;

    public NativeLibraryAdapter(string name)
        => _library = NativeLibrary.Load(name);

    public IntPtr GetFunctionPointer(string name)
        => NativeLibrary.TryGetExport(_library, name, out var address)
            ? address
            : IntPtr.Zero;
}

Ardından sağlayıcıyı SQLitePCLRaw yapılandırın. Microsoft.Data.Sqlite öğesinin uygulamanızda kullanılmasından önce bunun yapıldığından emin olun. Ayrıca, sağlayıcınızı geçersiz kabilecek bir SQLitePCLRaw paket paketi kullanmaktan kaçının.

SQLite3Provider_dynamic_cdecl
    .Setup("sqlite3", new NativeLibraryAdapter("sqlite3"));
SQLitePCL.raw.SetProvider(new SQLite3Provider_dynamic_cdecl());