0

C# で (Data.SQLite を使用して) Sqlite のヘルパー クラスを作成し、GetTables、GetColumnNames などのメソッドを配置しています

データベースをアタッチするメソッド AttachDatabase を追加しましたが、機能していないようです。

このメソッドのコードは次のとおりです。

    public void AttachDatabase(string path)
    {
        string db_name = "attdb";
        sqlConnection.Open();

        SQLiteCommand scom = new SQLiteCommand(sqlConnection);
        scom.CommandText = "ATTACH '"+path+"' AS " + db_name;

        scom.ExecuteNonQuery();

        sqlConnection.Close();
    }

データベース ファイルへのパスを指定すると、このメソッドは例外をスローしません。


そしてそれをテストするために、このようなヘルパークラスに別のメソッドを追加しました

    public List<string> GetAllDatabases()
    {
        List<string> mylist = new List<string>();

        sqlConnection.Open();
        SQLiteCommand scom = new SQLiteCommand("PRAGMA database_list", sqlConnection);
        SQLiteDataReader sreader = scom.ExecuteReader();

        while (sreader.Read())
        {
            string name = (sreader.GetValue(1)).ToString();
            mylist.Add(name);
        }
        sqlConnection.Close();

        return mylist;
    }

データベースをアタッチした後、このメソッドはメイン テーブルのみを含むリストを返します。

私は何を間違っていますか?

4

1 に答える 1

3

Sqlite は、接続されたデータベースを保持しません。接続を開いたり閉じたりするたびに、接続されているデータベースは忘れられます。

于 2012-04-18T06:55:28.243 に答える