0

我在 C# 中为 Sqlite 创建了一个帮助器类(使用 Data.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 回答