2013-04-25 35 views
0

我正在使用使用Mono.Data.Sqlite DLL的SQLite项目,以便我的程序跨平台在Windows和单声道。该程序成功构建,没有任何问题,但是当我运行该程序时,它试图建立与数据库的连接。单声道Sqlite3 - 找不到sqlite3模块

不过,我得到一个错误

无法加载DLL“sqlite3的”:指定的模块找不到。 (异常来自HRESULT:0x8007007E)

下面是我如何连接到SQLite数据库

public SqliteConnection conn = null; 
     private static string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
     private static string exeName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name; 
     public static string DATABASE_PATH = path + string.Format("\\BoardiesITSolutions\\{0}\\{0}.db", exeName); 

     public ConnectSQLiteDatabase(string dbPassword) 
     { 
      try 
      { 
       Console.WriteLine("DB Password: {0}", Encryption.decrypt(dbPassword)); 
       conn = new SqliteConnection("Data Source="+DATABASE_PATH+";Password="+Encryption.decrypt(dbPassword)); 
       conn.Open(); 
      } 
      catch (SqliteException ex) 
      { 
       Console.WriteLine("Open Error: " + ex.Message); 
      } 
     } 

感谢您的帮助,您可以提供的代码。

+0

我想你可能会在Windows上运行时,使用Windows的互操作(Win32的编译SQLite的)库。 .NET代码可能是跨平台的,但SQLite二进制文件可能不是。文件格式相同,是的,但二进制可执行文件,没有。 – 2013-04-25 19:58:24

回答

0

我设法解决了这个问题。

我为Windows安装了预编译的二进制文件,并将该DLL导入到我的项目中,以便在Windows上正常工作。然后下载源代码,并从链接http://system.data.sqlite.org/index.html/doc/trunk/www/build.wiki#mono手动构建单声道DLL,并将其安装在Linux服务器上,现在它在两个平台上都能正常工作。

-1

尝试安装:

sudo apt-get install libsqlite3-dev