problemas SQLite + SpatiaLite
-
21-09-2019 - |
Pregunta
Estoy intentando acceder a una SpatiaLite de C # con proveedor System.Data.SQLite. Cuando intento cargar la extensión SpatiaLite, siempre me dan la
System.Data.SQLite.SQLiteException: SQLite error
The specified module could not be found.
error, aunque DLL del SpatiaLite se ha copiado en el directorio bin. Incluso he intentado especificar la ruta absoluta a la DLL, pero en vano.
Aquí está el 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();
}
...
este enlace Me da la impresión de que esto debería funcionar .
Gracias de antemano
Solución
Bueno, gracias a sqlite3.exe herramienta de línea de comandos, he descubierto que hay algunos archivos DLL adicionales necesarios para que esto ejecute:
- libproj-0.dll
- libgeos-3-1-1.dll
- libgeos_c-1.dll
Usted puede encontrar estos en de SpatiaLite página de descarga . Sólo tienes que copiar en el directorio bin.
UPDATE: una DLL adicional necesaria es libiconv2.dll
Otros consejos
Yo tenía el mismo problema exacto en Java . Llamé System.load () para todos los DLL dependientes y todo funcionó como un campeón!
- libproj-0.dll
- libgeos-3-1-1.dll
- libgeos_c-1.dll
- libiconv2.dll
- libcharset1.dll