SQLite表关闭后消失
问题描述:
我目前正在使用SQLite处理IoT核心UWP应用程序。我遇到了一个问题,在远程的Rapberry上进行调试或者将应用程序部署到它之后,在完成程序之后,所有的表都消失了。SQLite表关闭后消失
我有一些sourve代码:
private static SQLiteConnection DbConnection
{
get
{
return new SQLiteConnection(
new SQLitePlatformWinRT(),
Path.Combine(ApplicationData.Current.LocalFolder.Path, "IoTdb.sqlite"));
}
}
private void createDatabase()
{
try
{
db = DbConnection;
db.TraceListener = new DebugTraceListener();
db.CreateTable<kapu_modClass>();
db.Close();
//string query = "CREATE TABLE IF NOT EXISTS " + getTName(11) + " (kapuMAzon int NOT NULL, kapuMNev varchar(255), PRIMARY KEY(kapuMAzon));";
//db.Execute(query);
}
catch (Exception e)
{
Debug.WriteLine(e.ToString());
}
}
虽然我跑我的代码,我可以创建表格,让我的数据到它:
kapu_modClass km = new kapu_modClass();
km.kapuMAzon = 1;
km.kapuMNev = "1";
db.Execute("INSERT INTO " + getTName(11) + " (kapuMAzon) VALUES('" + km.kapuMAzon + "');") ;
[Table ("kapu_mod_tabla")]
public class kapu_modClass
{
[PrimaryKey, Column("kapuMAzon", Name = "kapuMAzon")]
public int kapuMAzon { get; set; }
[MaxLength(255), Column("kapuMNev", Name = "kapuMNev")]
public string kapuMNev { get; set; }
}
一切工作正常,直到我关闭应用程序,然后当我重新启动它时,我失去了一切,只剩下数据库了。
有什么建议吗?
更新: 看起来,它有一个2开始cicle时期:在第一次尝试时,它使我的数据库,但无法打开它。在第二次启动时,数据库文件就在那里,不需要创建,打开,创建表格,并且在关闭程序之后,删除第一次尝试创建的数据库并返回到第一个Cicle。在每一个开始,我所有的表都是空的,尝试了db.Execute(“PRAGMA TEMP_STORE = 1”);命令,它假设将我的表设置为永久性的,但不是工作更加激烈。
答
好吧我拥有它,当我运行在调试模式下,或者创建一个调试应用程序包时,它会丢失一切,生成一个发布应用程序包后它可以正常工作。
您是否意外地只使用内存数据库?即存储介质上没有关联的数据库文件?与PC上的SQLite命令行工具(我的环境)我想我可以看到没有文件名参数启动sqlite3.exe时相同的行为。 CLI然后开始一个警告'连接到瞬态内存数据库。' – Yunnosch
如何暂停应用程序?有没有你写关于删除表的代码的地方? –
@Yunnosch关闭应用程序后,sqlite文件保持不变,我认为应该是db文件。我从http://blogs.u2u.be/diederik/post/2015/09/08/Using-SQLite-on-the-Universal-Windows-Platform.aspx页面获取了示例,但他们没有提到其他任何内容去做。我如何将它设置为非内存数据库? –