SQLite + SpatiaLite问题

时间:2009-10-12 19:29:27

标签: c# sqlite gis spatialite

我正在尝试使用System.Data.SQLite提供程序从C#访问SpatiaLite。当我尝试加载SpatiaLite扩展时,我总是得到

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

错误,即使将spatialite的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();
    }
    ...

this link我得到的印象应该有效。

提前致谢

2 个答案:

答案 0 :(得分:7)

非常感谢sqlite3.exe命令行工具,我发现还需要一些额外的DLL才能运行:

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

您可以在SpatiaLite's download page上找到这些内容。只需将它们复制到bin目录即可。

更新:需要的另一个dll是 libiconv2.dll

答案 1 :(得分:3)

我在 Java 中遇到了完全相同的问题。我为所有依赖的DLL调用了 System.load(),一切都像冠军一样!

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