0
我目前正在使用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頁面獲取了示例,但他們沒有提到其他任何內容去做。我如何將它設置爲非內存數據庫? –