Проблемы SQLite + SpatiaLite - PullRequest
       30

Проблемы SQLite + SpatiaLite

8 голосов
/ 12 октября 2009

Я пытаюсь получить доступ к SpatiaLite из C # с помощью поставщика System.Data.SQLite. Когда я пытаюсь загрузить расширение SpatiaLite, я всегда получаю

System.Data.SQLite.SQLiteException: SQLite error
The specified module could not be found.
Ошибка

, даже если DLL-файл пространственного объекта был скопирован в каталог bin. Я даже пытался указать абсолютный путь к DLL, но безрезультатно.

Вот код:

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

С по этой ссылке У меня сложилось впечатление, что это должно сработать.

Заранее спасибо

Ответы [ 2 ]

7 голосов
/ 12 октября 2009

Что ж, благодаря инструменту командной строки sqlite3.exe я обнаружил, что для его работы необходимы дополнительные библиотеки DLL:

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

Вы можете найти их на странице загрузки SpatiaLite . Просто скопируйте их в каталог bin.

ОБНОВЛЕНИЕ: требуется еще одна dll libiconv2.dll

3 голосов
/ 31 мая 2011

У меня была точно такая же проблема в Java . Я вызвал System.load () для всех зависимых DLL, и все работало как чемпион!

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