我在Windows 8.1移动应用程序中使用SQLite,当我尝试从数据库中删除某些内容时,我在方法RunInTransaction
中得到一个例外:
Cannot create commands from unopened database.
但是当我尝试插入一些东西时效果很好! 这是插入方法:
// Inserts a new place in the Places table.
public void InsertPlace(PlacesTable place) {
using (var dbConn = new SQLiteConnection(App.DB_PATH)) {
dbConn.RunInTransaction(() => {
dbConn.Insert(place);
});
}
}
这是删除方法:
// Deletes all the places from the database.
public void DeletePlaces() {
using (var dbConn = new SQLiteConnection(App.DB_PATH)) {
dbConn.RunInTransaction(() => {
dbConn.DropTable<PlacesTable>();
dbConn.CreateTable<PlacesTable>();
dbConn.Dispose();
dbConn.Close();
});
}
}
为什么在第二种情况下会发生此异常?
所以,我发现Dispose
和Close
对此异常负责,但我希望有人解释为什么会发生这种情况。
Close
导致问题,因为我有using (var dbConn = new SQLiteConnection(App.DB_PATH))
和Dispose
出于类似原因?
我在一个教程中找到了这个,所以我花了一些时间才认为代码有错误。