2009-10-12 9 views
8

मैं System.Data.SQLite प्रदाता का उपयोग कर C# से स्पैटियालाइट तक पहुंचने का प्रयास कर रहा हूं। जब मैं SpatiaLite विस्तार को लोड करने की कोशिश, मैं हमेशाSQLite + SpatiaLite समस्याएं

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

त्रुटि मिलती है, भले ही spatialite के 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 से मैं धारणा यह काम करना चाहिए मिलता है।

अग्रिम धन्यवाद

उत्तर

7

खैर धन्यवाद कमांड लाइन टूल sqlite3.exe लिए, मुझे पता चला है कि कुछ अतिरिक्त चलाने के लिए इस के लिए आवश्यक DLLs देखते हैं कि:

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

आपपर इन पा सकते हैं। बस उन्हें बिन निर्देशिका में कॉपी करें।

अद्यतन: एक अतिरिक्त जरूरत dll libiconv2.dll

+0

प्रतिलिपि करने के लिए आवेदन की बिन निर्देशिका या सिस्टम फ़ोल्डर में? मैं इसे काम नहीं कर सकता .. कुछ सुराग? – vinayan

+0

मुझे याद रखने से @vinayan, मैंने उन्हें सी # प्रोजेक्ट में फाइल के रूप में जोड़ा और फिर अपनी संपत्तियों को "नई अगर कॉपी करें" पर सेट किया। तो हाँ, वे आवेदन की बिन निर्देशिका में हैं। –

3

मैं जावामें ठीक उसी समस्या थी है। मैंने सभी निर्भर डीएलएल के लिए System.load() और सब कुछ एक चैंप की तरह काम किया!

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