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”);命令,它假设将我的表设置为永久性的,但不是工作更加激烈。

+0

您是否意外地只使用内存数据库?即存储介质上没有关联的数据库文件?与PC上的SQLite命令行工具(我的环境)我想我可以看到没有文件名参数启动sqlite3.exe时相同的行为。 CLI然后开始一个警告'连接到瞬态内存数据库。' – Yunnosch

+0

如何暂停应用程序?有没有你写关于删除表的代码的地方? –

+0

@Yunnosch关闭应用程序后,sqlite文件保持不变,我认为应该是db文件。我从http://blogs.u2u.be/diederik/post/2015/09/08/Using-SQLite-on-the-Universal-Windows-Platform.aspx页面获取了示例,但他们没有提到其他任何内容去做。我如何将它设置为非内存数据库? –

好吧我拥有它,当我运行在调试模式下,或者创建一个调试应用程序包时,它会丢失一切,生成一个发布应用程序包后它可以正常工作。