Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Microsoft.Data.Sqlite dibangun di atas SQLitePCLRaw. Anda dapat menggunakan versi kustom dari pustaka asli SQLite dengan menggunakan sebuah bundel atau dengan mengonfigurasi penyedia SQLitePCLRaw.
Bundel
SQLitePCLRaw menyediakan paket bundel berbasis kenyamanan, yang memudahkan untuk membawa dependensi yang tepat di berbagai platform. Paket Microsoft.Data.Sqlite utama memperkenalkan SQLitePCLRaw.bundle_e_sqlite3 secara otomatis. Untuk menggunakan bundel yang berbeda, instal paket Microsoft.Data.Sqlite.Core sebagai gantinya bersama dengan paket bundel yang ingin Anda gunakan. Bundel secara otomatis diinisialisasi oleh Microsoft.Data.Sqlite.
| Bundel | Deskripsi |
|---|---|
| SQLitePCLRaw.bundle_e_sqlite3 | Menyediakan versi SQLite yang konsisten di semua platform. Menyertakan ekstensi FTS4, FTS5, JSON1, dan R*Tree. Ini adalah default. |
| SQLitePCLRaw.bundle_e_sqlcipher | Menyediakan build sumber terbuka yang tidak resmi dari SQLCipher. |
| SQLitePCLRaw.bundle_green | Sama seperti bundle_e_sqlite3, kecuali pada iOS di mana ia menggunakan pustaka SQLite sistem. |
| SQLitePCLRaw.bundle_sqlite3 | Menggunakan sistem pustaka SQLite. |
| SQLitePCLRaw.bundle_winsqlite3 | Menggunakan winsqlite3.dll, pustaka SQLite sistem di Windows 10. |
| SQLitePCLRaw.bundle_zetetic | Menggunakan kompilasi versi resmi dari Zetetic (tidak termasuk). |
Misalnya, untuk menggunakan build SQLCipher sumber terbuka yang tidak resmi, gunakan perintah berikut.
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_e_sqlcipher
Penyedia SQLitePCLRaw yang tersedia
Saat tidak mengandalkan bundel, Anda dapat menggunakan penyedia SQLite yang tersedia dengan rakitan inti.
| Penyedia | Deskripsi |
|---|---|
| SQLitePCLRaw.provider.dynamic | Penyedia dynamic memuat pustaka asli alih-alih menggunakan atribut System.Runtime.InteropServices.DllImportAttribute. Untuk informasi selengkapnya tentang menggunakan penyedia ini, lihat menggunakan penyedia dinamis. |
| SQLitePCLRaw.provider.e_sqlite3 |
e_sqlite3 adalah penyedia default. |
| SQLitePCLRaw.provider.e_sqlcipher | Penyedia e_sqlcipher adalah SQLCipher yang tidak resmi dan tidak didukung. |
| SQLitePCLRaw.provider.sqlite3 | Penyedia sqlite3 adalah SQLite yang disediakan oleh sistem untuk iOS, macOS, dan Linux. |
| SQLitePCLRaw.provider.sqlcipher | Penyedia sqlcipher adalah untuk rakitan SQLCipher resmi dari Zetetic. |
| SQLitePCLRaw.provider.winsqlite3 | Penyedia winsqlite3 adalah untuk lingkungan Windows 10. |
Untuk menggunakan penyedia sqlite3, gunakan perintah berikut:
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.core
dotnet add package SQLitePCLRaw.provider.sqlite3
Dengan paket yang terinstal, Anda kemudian mengatur penyedia ke instans sqlite3.
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}");
}
}
}
Menggunakan penyedia dinamis
Anda dapat menggunakan build SQLite Anda sendiri dengan memanfaatkan paket SQLitePCLRaw.provider.dynamic_cdecl. Dalam hal ini, Anda bertanggung jawab untuk menyebarkan pustaka asli bersama aplikasi Anda. Perhatikan, detail tentang penyebaran pustaka asli bersama dengan aplikasi Anda dapat sangat bervariasi tergantung pada platform .NET dan runtime yang Anda gunakan.
Pertama, Anda harus menerapkan IGetFunctionPointer. Implementasi pada Inti .NET adalah sebagai berikut:
class NativeLibraryAdapter : IGetFunctionPointer
{
readonly IntPtr _library;
public NativeLibraryAdapter(string name)
=> _library = SQLitePCL.NativeLibrary.Load(name);
public IntPtr GetFunctionPointer(string name)
=> SQLitePCL.NativeLibrary.TryGetExport(_library, name, out var address)
? address
: IntPtr.Zero;
}
Selanjutnya, konfigurasikan penyedia SQLitePCLRaw. Pastikan ini dilakukan sebelum Microsoft.Data.Sqlite digunakan di aplikasi Anda. Selain itu, hindari menggunakan paket bundel SQLitePCLRaw yang mungkin menggantikan penyedia Anda.
SQLite3Provider_dynamic_cdecl
.Setup("sqlite3", new NativeLibraryAdapter("sqlite3"));
SQLitePCL.raw.SetProvider(new SQLite3Provider_dynamic_cdecl());