簡體   English   中英

System.Data.Sqlite問題

[英]System.Data.Sqlite problems

我在讓Sqlite在我的C#irc機器人中工作時遇到問題。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.IO;

namespace ModBot
{
class Database
{
    private SQLiteConnection myDB;
    private SQLiteCommand cmd;

    public Database()
    {
        InitializeDB();
    }

    private void InitializeDB()
    {
        if (File.Exists("ModBot.db"))
        {
            Console.WriteLine("HEYOOOOOOO");
            myDB = new SQLiteConnection("Data Source=ModBot.db;Version=3;");
            String sql = "CREATE TABLE IF NOT EXISTS twitch (id INTEGER PRIMARY KEY, user TEXT, currency INTEGER DEFAULT 0, subscriber INTEGER DEFAULT 0, btag TEXT DEFAULT null);";
            cmd = new SQLiteCommand(sql, myDB);
            cmd.ExecuteNonQuery();
        }
        else
        {
            Console.WriteLine("YOOHOOOOO");
            SQLiteConnection.CreateFile("ModBot.db");
            myDB = new SQLiteConnection("Data Source=ModBot.db;Version=3;");
            String sql = "CREATE TABLE IF NOT EXISTS twitch (id INTEGER PRIMARY KEY, user TEXT, currency INTEGER DEFAULT 0, subscriber INTEGER DEFAULT 0, btag TEXT DEFAULT null);";
            cmd = new SQLiteCommand(sql, myDB);
            cmd.ExecuteNonQuery();
        }
    }
}
}

我下載了System.Data.Sqlite,並將其作為資源添加到我的項目中。 當我運行代碼時,它嘗試進行實際連接時會引發DllNotFound異常(特別是:無法加載DLL'SQLite.Interop.dll':找不到指定的模塊。(HRESULT的異常:0x8007007E)) 。

有任何想法嗎?

  1. 安裝Visual C ++運行時庫的RTM版本與System.Data.SQLite 1.0.74完美配合。 因此不需要SP1版本。

  2. 與.NET 4運行時一起安裝的C運行時的版本是msvcr100的RTM版本,但名稱為msvcr100_clr0400.dll。 將其副本重命名為msvcr100.dll,無論是在System32中還是在System.Data.SQLite.dll旁,一切似乎都可以正常工作。

  3. 看來他們已經脫離了C運行時的SxS部署。 因此,嵌入清單中不再有“ dependency”標記,並且將加載System32(或與.exe相同的目錄)中的最新版本。

一些伙伴在StackOverflow上就這些更改提出了一個問題: Visual C ++ 2010:對MSVC運行時部署的更改(不再帶有清單的SxS)

這一切都意味着對於.NET 4版本,您可以將System.Data.SQLite.dll和msvcr100.dll部署在同一目錄中,而早期版本的運行時則無法實現。 對我來說,這可以解決所有問題,您可以移至當前版本的System.Data.SQLite.dll。

暫無
暫無

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

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