Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用.NET在Sqlite中附加数据库不起作用_.net_Sqlite_System.data.sqlite - Fatal编程技术网

使用.NET在Sqlite中附加数据库不起作用

使用.NET在Sqlite中附加数据库不起作用,.net,sqlite,system.data.sqlite,.net,Sqlite,System.data.sqlite,我在C#(使用Data.Sqlite)中为Sqlite创建了一个帮助器类,我将GetTables、GetColumnNames 现在我添加了方法AttachDatabase来附加数据库,但它似乎不起作用 此方法的代码如下所示 public void AttachDatabase(string path) { string db_name = "attdb"; sqlConnection.Open(); SQLiteCommand

我在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();
    }
当我提供数据库文件的路径时,该方法不会引发任何异常


为了测试它,我在helper类中添加了另一个方法,如下所示

    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;
    }
公共列表GetAllDatabases() { List mylist=新列表(); sqlConnection.Open(); SQLiteCommand scom=新的SQLiteCommand(“PRAGMA数据库列表”,sqlConnection); SQLiteDataReader sreader=scom.ExecuteReader(); while(sreader.Read()) { 字符串名称=(sreader.GetValue(1)).ToString(); mylist.Add(名称); } sqlConnection.Close(); 返回mylist; } 附加数据库后,此方法返回一个仅包含主表的列表


我做错了什么?

Sqlite不会持久化连接的数据库。每次打开和关闭连接时,都会忘记连接的数据库。

Sqlite不会持久化连接的数据库。每次打开和关闭连接时,都会忘记连接的数据库。

您想要实现什么?您想要实现什么?我是否应该在helper类中保持连接打开,而不是像现在这样在每个方法中打开/关闭连接?我只打算将sqlite用于桌面应用程序。这个问题没有通用的答案。如果一次只有一个应用程序访问数据库,那么我认为使用相同的连接是可以的(尽管在多线程方面存在一些问题)。如果只想获取有关数据库文件的信息,则可以打开该文件的单个连接并查询该文件,而无需附加该文件。这完全取决于您的环境。那么,我是否应该保持helper类中的连接处于打开状态,而不是像现在这样在每个方法中打开/关闭连接?我只打算将sqlite用于桌面应用程序。这个问题没有通用的答案。如果一次只有一个应用程序访问数据库,那么我认为使用相同的连接是可以的(尽管在多线程方面存在一些问题)。如果只想获取有关数据库文件的信息,则可以打开该文件的单个连接并查询该文件,而无需附加该文件。这完全取决于你的情况。