2015-04-21 60 views
2

這是我寫的數據庫連接代碼:SQlite的using語句使無法加載DLL「SQLite.Interop.dll」錯誤另一臺計算機上

private static void OnTimedEvent(Object source, ElapsedEventArgs e) 
{      
     using (SQLiteConnection con = new SQLiteConnection(connectionString)) 
     { 
      try 
      { 
       con.Open(); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.ToString()); 
      } 

      if (con.State == System.Data.ConnectionState.Open) 
      { 
       Console.WriteLine("Database Opened"); 

       ushort[] writeData = new ushort[10]; 
       writeData = parseList(byteList); 

       if (writeData != errorBytes) 
       { 
        writeToDb(con, writeData); 
       } 

       else 
       { 
        Console.WriteLine("Error Bytes returned! BROKEN DATA!!!"); 
       } 

       //con.Close(); 
      } 

      else 
      { 
       Console.WriteLine("Can't open the database!"); 
      } 
     } 
    }` 

當我在計算機上運行的程序,我編寫了可正常工作的代碼並打開數據庫。但是,當我在另一臺計算機上運行我的程序時,代碼不會進入using聲明並給出例外情況SQLite.Interop.dll找不到。我將System.Data.SQLite.dll添加到我的項目參考中。另外我有這個DLL文件在另一臺計算機。我是否需要向其他計算機添加任何內容以使此程序正常工作?

+3

_does not work_是什麼意思?在其他計算機中收到異常或錯誤消息?你是什​​麼意思,它不會使用聲明? –

+0

你可以嘗試捕獲所有此塊以獲取有關該代碼的信息嗎? – clement

+0

它只是跳過使用語句開頭的部分。沒有例外。但是現在我注意到沒有嘗試和捕捉語句來捕捉異常。我將添加try和catch語句並在此處寫入錯誤信息。謝謝! – vontarro

回答

1

我發現問題出在SQLite dll上。當我從NuGet Package Manager安裝System.Data.SQLite庫並將平臺目標設置爲x86問題解決時。儘管在問我這個問題之前平臺的目標是x86,但是從NuGet Package Manager重新安裝庫解決了我的問題。在此之前,我使用從http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki下載的dll作爲我項目的參考。

-1

嘗試檢查connectionString,SQLite文件的位置,..也許你正在試圖創建它在你的程序不允許在另一臺計算機上寫入的地方。如果存在差異,請嘗試以管理員身份運行您的應用。唯一出現在我腦海的是它在創建連接時崩潰,因此它不會進入使用語句。

相關問題