Versions SQLite personnalisées
Microsoft.Data.Sqlite
est basé sur SQLitePCLRaw
. Vous pouvez utiliser des versions personnalisées de la bibliothèque SQLite native à l’aide d’un pack ou en configurant un fournisseur de SQLitePCLRaw
.
Packs
SQLitePCLRaw
fournit des packs groupés basés à des fins de commodité, facilitant l’intégration des dépendances appropriées sur différentes plateformes. Le package Microsoft.Data.Sqlite
main apporte SQLitePCLRaw.bundle_e_sqlite3
par défaut. Pour utiliser un autre pack, installez le package Microsoft.Data.Sqlite.Core
à la place avec le pack groupé que vous souhaitez utiliser. Les packs groupés sont initialisés automatiquement par Microsoft.Data.Sqlite
.
Bundle | Description |
---|---|
SQLitePCLRaw.bundle_e_sqlite3 | Fournit une version cohérente de SQLite sur toutes les plateformes. Inclut les extensions FTS4, FTS5, JSON1 et R*Tree. Il s’agit de la valeur par défaut. |
SQLitePCLRaw.bundle_e_sqlcipher | Fournit une build open source non officielle de SQLCipher . |
SQLitePCLRaw.bundle_green | Identique à bundle_e_sqlite3 , sauf sur iOS où il utilise la bibliothèque SQLite système. |
SQLitePCLRaw.bundle_sqlite3 | Utilise la bibliothèque SQLite système. |
SQLitePCLRaw.bundle_winsqlite3 | Utilise winsqlite3.dll , la bibliothèque SQLite système sur Windows 10. |
SQLitePCLRaw.bundle_zetetic | Utilise les builds officielles SQLCipher de Zetetic (non incluses). |
Par exemple, pour utiliser la build open source non officielle de SQLCipher
, utilisez les commandes suivantes.
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_e_sqlcipher
Fournisseurs disponibles SQLitePCLRaw
Lorsque vous ne vous fiez pas à un pack, vous pouvez utiliser les fournisseurs disponibles de SQLite avec l’assembly principal.
Fournisseur | Description |
---|---|
SQLitePCLRaw.provider.dynamic | Le fournisseur dynamic charge la bibliothèque native au lieu d’utiliser des attributs System.Runtime.InteropServices.DllImportAttribute. Pour plus d’informations sur l’utilisation de ce fournisseur, consultez Utiliser le fournisseur dynamique. |
SQLitePCLRaw.provider.e_sqlite3 | e_sqlite3 est le fournisseur par défaut. |
SQLitePCLRaw.provider.e_sqlcipher | Le fournisseur e_sqlcipher est le SQLCipher non officiel et non soutenu. |
SQLitePCLRaw.provider.sqlite3 | Le fournisseur sqlite3 est un SQLite fourni par le système pour iOS, macOS et Linux. |
SQLitePCLRaw.provider.sqlcipher | Le fournisseur sqlcipher est destiné aux builds SQLCipher officielles de Zetetic . |
SQLitePCLRaw.provider.winsqlite3 | Le fournisseur winsqlite3 est destiné aux environnements Windows 10. |
Pour utiliser le fournisseur sqlite3
, utilisez les commandes suivantes :
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.core
dotnet add package SQLitePCLRaw.provider.sqlite3
Une fois les packages installés, vous définissez le fournisseur sur l’instance de 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}");
}
}
}
Utiliser le fournisseur dynamique
Vous pouvez utiliser votre propre build de SQLite en tirant parti du package SQLitePCLRaw.provider.dynamic_cdecl
. Dans ce cas, vous êtes responsable du déploiement de la bibliothèque native avec votre application. Notez que les détails du déploiement des bibliothèques natives avec votre application varient considérablement en fonction de la plateforme .NET et du runtime que vous utilisez.
Tout d’abord, vous devez implémenter IGetFunctionPointer
. L’implémentation sur .NET Core est la suivante :
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;
}
Ensuite, configurez le fournisseur SQLitePCLRaw
. Assurez-vous que cela est effectué avant d’utiliser Microsoft.Data.Sqlite
dans votre application. En outre, évitez d’utiliser un pack groupé SQLitePCLRaw
qui peut remplacer votre fournisseur.
SQLite3Provider_dynamic_cdecl
.Setup("sqlite3", new NativeLibraryAdapter("sqlite3"));
SQLitePCL.raw.SetProvider(new SQLite3Provider_dynamic_cdecl());