Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Microsoft.Data.Sqlite je postaven na SQLitePCLRaw. Vlastní verze nativní knihovny SQLite můžete použít pomocí balíčku nebo konfigurací SQLitePCLRaw poskytovatele.
Sady
SQLitePCLRaw poskytuje pohodlné balíčky, které usnadňují zahrnutí správných závislostí napříč různými platformami. Hlavní balíček Microsoft.Data.Sqlite přináší SQLitePCLRaw.bundle_e_sqlite3 ve výchozím nastavení. Pokud chcete použít jinou sadu, nainstalujte Microsoft.Data.Sqlite.Core balíček společně s balíčkem, který chcete použít. Svazky jsou automaticky inicializovány pomocí Microsoft.Data.Sqlite.
| Sada | Popis |
|---|---|
| SQLitePCLRaw.bundle_e_sqlite3 | Poskytuje konzistentní verzi SQLite na všech platformách. Zahrnuje rozšíření FTS4, FTS5, JSON1 a R*Tree. Tato možnost je výchozí. |
| SQLitePCLRaw.bundle_e_sqlcipher | Poskytuje neoficiální open-source verzi SQLCipher. |
| SQLitePCLRaw.bundle_green | Stejné jako bundle_e_sqlite3v iOSu, kde používá systémovou knihovnu SQLite. |
| SQLitePCLRaw.bundle_sqlite3 | Používá systémovou knihovnu SQLite. |
| SQLitePCLRaw.bundle_winsqlite3 | Používá winsqlite3.dllsystémovou knihovnu SQLite ve Windows 10. |
| SQLitePCLRaw.bundle_zetetic | Používá oficiální SQLCipher buildy ze Zetetic (nezahrnuté). |
Pokud například chcete použít neoficiální opensourcové SQLCipher sestavení, použijte následující příkazy.
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_e_sqlcipher
Poskytovatelé dostupní pro SQLitePCLRaw
Pokud se nespoléháte na balíček, můžete použít dostupné zprostředkovatele SQLite společně se základní knihovnou.
| Poskytovatel | Popis |
|---|---|
| SQLitePCLRaw.provider.dynamic | Poskytovatel dynamic načte nativní knihovnu místo použití atributů System.Runtime.InteropServices.DllImportAttribute. Další informace o použití tohoto zprostředkovatele najdete v tématu použití dynamického zprostředkovatele. |
| SQLitePCLRaw.provider.e_sqlite3 |
e_sqlite3 je výchozí zprostředkovatel. |
| SQLitePCLRaw.provider.e_sqlcipher | Poskytovatel e_sqlcipher je neoficiální a není podporován SQLCipher. |
| SQLitePCLRaw.provider.sqlite3 | Poskytovatel sqlite3 je systémový SQLite pro iOS, macOS a Linux. |
| SQLitePCLRaw.provider.sqlcipher | Poskytovatel sqlcipher je určen pro oficiální SQLCipher buildy z Zetetic. |
| SQLitePCLRaw.provider.winsqlite3 | Poskytovatel winsqlite3 je pro prostředí Windows 10. |
K použití sqlite3 zprostředkovatele použijte následující příkazy:
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.core
dotnet add package SQLitePCLRaw.provider.sqlite3
S nainstalovanými balíčky pak nastavíte zprostředkovatele na sqlite3 instanci.
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}");
}
}
}
Použijte dynamického zprostředkovatele
Pomocí balíčku SQLitePCLRaw.provider.dynamic_cdecl můžete použít vlastní verzi SQLite. V takovém případě zodpovídáte za nasazení nativní knihovny s vaší aplikací. Všimněte si, že podrobnosti o nasazení nativních knihoven s vaší aplikací se výrazně liší v závislosti na tom, jakou platformu .NET a modul runtime používáte.
Nejprve budete muset implementovat IGetFunctionPointer. Implementace v .NET Core je následující:
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;
}
Dále nakonfigurujte SQLitePCLRaw zprostředkovatele. Ujistěte se, že se to udělá, než se Microsoft.Data.Sqlite použije ve vaší aplikaci. Vyhněte se také použití SQLitePCLRaw balíčku, který by mohl přepsat vašeho poskytovatele.
SQLite3Provider_dynamic_cdecl
.Setup("sqlite3", new NativeLibraryAdapter("sqlite3"));
SQLitePCL.raw.SetProvider(new SQLite3Provider_dynamic_cdecl());