Domanda

Sto cercando di accedere a una SpatiaLite da C # utilizzando provider di System.Data.SQLite. Quando provo a caricare l'estensione SpatiaLite, ho sempre arrivare alla

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

errore, anche se dll del spatialite è stato copiato nella directory bin. Ho anche cercato di specificare il percorso assoluto del dll, ma senza alcun risultato.

Ecco il codice:

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();
    }
    ...

questo link ho l'impressione questo dovrebbe funzionare .

Grazie in anticipo

È stato utile?

Soluzione

Bene grazie a sqlite3.exe strumento a riga di comando, ho scoperto che ci sono alcune DLL aggiuntivi necessari per questo per l'esecuzione:

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

È possibile trovare questi su di SpatiaLite pagina di download . Basta copiare nella directory bin.

UPDATE: una dll aggiuntivo necessario è libiconv2.dll

Altri suggerimenti

Ho avuto lo stesso problema in Java . Ho chiamato System.load () per tutte le DLL dipendenti e tutto ha funzionato come un campione!

  • libproj-0.dll
  • libgeos-3-1-1.dll
  • libgeos_c-1.dll
  • libiconv2.dll
  • libcharset1.dll
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top