使用.NET在Sqlite中附加数据库不起作用
我在C#(使用Data.Sqlite)中为Sqlite创建了一个帮助器类,我将GetTables、GetColumnNames 现在我添加了方法AttachDatabase来附加数据库,但它似乎不起作用 此方法的代码如下所示使用.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
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用于桌面应用程序。这个问题没有通用的答案。如果一次只有一个应用程序访问数据库,那么我认为使用相同的连接是可以的(尽管在多线程方面存在一些问题)。如果只想获取有关数据库文件的信息,则可以打开该文件的单个连接并查询该文件,而无需附加该文件。这完全取决于你的情况。