Проблемы с SQLite + SpatiaLite
-
21-09-2019 - |
Вопрос
Я пытаюсь получить доступ к SpatiaLite из C #, используя System.Data.SQLite provider.Когда я пытаюсь загрузить расширение SpatiaLite, я всегда получаю
System.Data.SQLite.SQLiteException: SQLite error
The specified module could not be found.
ошибка, даже несмотря на то, что библиотека DLL spatialite была скопирована в каталог 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();
}
...
От эта ссылка У меня складывается впечатление, что это должно сработать.
Заранее спасибо
Решение
Что ж, благодаря sqlite3.exe инструменту командной строки я обнаружил, что для его запуска необходимы некоторые дополнительные библиотеки DLL:
- libproj-0.dll
- libgeos-3-1-1.dll
- libgeos_c-1.dll
Вы можете найти их на Страница загрузки SpatiaLite.Просто скопируйте их в каталог bin.
Обновить: необходима одна дополнительная библиотека dll, это libiconv2.dll
Другие советы
У меня была точно такая же проблема в Java - Язык.Я звонил System.load() Система.загрузка() для всех зависимых DLL-файлов и все работало как чемпион!
- libproj-0.dll
- libgeos-3-1-1.dll
- libgeos_c-1.dll
- libiconv2.dll
- libcharset1.dll