Problemas Sqlite + Spatialite
-
21-09-2019 - |
Pergunta
Estou tentando acessar uma espacialita a partir de C# usando o provedor System.Data.SQLite. Quando tento carregar a extensão espacialita, sempre recebo o
System.Data.SQLite.SQLiteException: SQLite error
The specified module could not be found.
Erro, mesmo que a DLL da espacialita tenha sido copiada para o diretório da bin. Até tentei especificar o caminho absoluto para a DLL, mas sem sucesso.
Aqui está o código:
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();
}
...
A partir de esse link Tenho a impressão de que isso deve funcionar.
desde já, obrigado
Solução
Bem, graças ao SQLite3.exe Comando Line Tool, descobri que existem algumas DLLs adicionais necessárias para que isso seja executado:
- libproj-0.dll
- libgeos-3-1-1.dll
- libgeos_c-1.dll
Você pode encontrá -los em Página de download da espacialita. Basta copiá -los para o diretório da bin.
ATUALIZAR: Uma DLL adicional necessária é libiconv2.dll
Outras dicas
Eu tive exatamente o mesmo problema em Java. Liguei System.load () Para todas as DLLs dependentes e tudo funcionou como um campeão!
- libproj-0.dll
- libgeos-3-1-1.dll
- libgeos_c-1.dll
- libiconv2.dll
- libcharset1.dll