2014-01-27 21 views
1

如何在使用Sqlite.net的Windows 8商店应用程序中更新现有表的模式?我尝试CreateTableAsync然而,创建一个新的表,失去了现有的数据。它应该在插入时更新模式;然而,当我尝试插入不在表中的列的数据时,它会崩溃,指示该列不存在。如何在Windows 8上更新sqlite.net中的表模式

+0

您是否尝试过使用SQLite数据库浏览器代码 ?它为所有简单的数据库操作提供了一个易于使用的GUI。 –

+0

你可以显示你使用的代码吗?我尝试了CreateTable以及CreateTableAsync,并且如果我将一个属性添加到我的表类并调用CreateTable,它会将其添加到表中,并为现有记录添加空值,如果此后我开始插入记录,则添加值。 – ChristiaanV

回答

0

您需要使用.Update而不是创建一个新表。 .Update将通过您提供的Model创建一个新数据库,并将现有数据复制/粘贴到新数据库。

我的检查和更新我的数据库

if(result.FirstOrDefault().version != 3 || result.FirstOrDefault().version == 0) 
{ 
    //Update Database with new columns by the updated model called Unlockables 

    conn.CreateTable<Unlockables>(); 
    try 
    { 
     var existingRow = (conn.Table<Unlockables>().Where(c => c.Id == 1)).SingleOrDefault(); 
     existingRow.version = 3; 
     existingRow.SelectedTheme = 0; 
     existingRow.Theme1 = true; 
     int succes = conn.Update(existingRow); 
    } 
    catch(Exception ex) 
    { 
     Debug.WriteLine(ex); 
    } 
} 

希望这将有助于:)

相关问题