簡體   English   中英

SQlite using語句給出了無法在另一台計算機上加載DLL'SQLite.Interop.dll'錯誤

[英]SQlite using statement gives Unable to load DLL 'SQLite.Interop.dll' error on another computer

這是我為數據庫連接編寫的代碼:

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未找到SQLite.Interop.dll的異常。 我將System.Data.SQLite.dll添加到項目的引用中。 我在另一台計算機上也有此dll文件。 我需要添加任何東西到另一台計算機上以使該程序正常工作嗎?

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

嘗試檢查connectionString,SQLite文件的位置,..也許您正在嘗試在不允許您的程序在另一台計算機上寫的地方創建它。 如果有區別,請嘗試以管理員身份運行您的應用。 我唯一想到的是它在創建連接時崩潰,因此不會進入using語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM