Question

Je suis en train d'accéder à un SpatiaLite de C # en utilisant le fournisseur System.Data.SQLite. Lorsque je tente de charger l'extension SpatiaLite, je reçois toujours le

System.Data.SQLite.SQLiteException: SQLite error
The specified module could not be found.

erreur, même si a été copié dll du spatialite dans le répertoire bin. J'ai même essayé spécifier le chemin absolu du dll, mais en vain.

Voici le code:

string connectionString = @"Data Source=D:\MyStuff\projects\OsmUtils\trunk\Data\Samples\DB\osm.sqlite";
using (SQLiteConnection connection = new SQLiteConnection (connectionString))
{
    connection.Open();

    using (SQLiteCommand command = connection.CreateCommand())
    {
        command.CommandText = @"SELECT load_extension('libspatialite-1.dll');";
        command.ExecuteScalar();
    }
    ...

De ce lien J'ai l'impression que cela devrait fonctionner .

Merci d'avance

Était-ce utile?

La solution

Eh bien grâce à sqlite3.exe outil de ligne de commande, je l'ai découvert qu'il ya des DLL supplémentaires nécessaires à cette option pour exécuter:

  • libproj-0.dll
  • libgeos-3-1-1.dll
  • libgeos_c-1.dll

Vous pouvez trouver sur SpatiaLite page de téléchargement . Il suffit de les copier dans le répertoire bin.

Mise à jour: une dll supplémentaire nécessaire est libiconv2.dll

Autres conseils

J'ai eu exactement le même problème Java . J'ai appelé System.load () pour toutes les DLL dépendantes et tout a fonctionné comme un champion!

  • libproj-0.dll
  • libgeos-3-1-1.dll
  • libgeos_c-1.dll
  • libiconv2.dll
  • libcharset1.dll
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top