2013-07-11 48 views
0

已存在的数据库被替换为在Windows 8的SQLite中调用方法CreateTable <>,擦除所有行并创建一个新表。我该如何解决?下面的代码来分析:SQLite CreateTable <>已存在的数据库被替换

using(var db = new SQLite.SQLiteConnection(App.DBPath)) 
     { 

      db.CreateTable<ListasEntid>(); 

      if (db.ExecuteScalar<int>("select count(1) from ListasEntid")==0) 
      { 
       db.RunInTransaction(() => 
       { 
        db.Insert(new ListasEntid() { Nome = "Lista", Eletros = "Teste" }); 
       }); 

      } 
     } 
+0

这看起来像Qt接口SQLite的头发。为此,有一种方法可以测试一个表是否存在,但我不记得它是什么。无论如何,肯定有一种测试方法,以便您可以跳过创建。 (或者根据bdares的建议,使用“CREATE TABLE IF NOT EXISTS”。) –

回答

0

谢谢你的关注,但问题是没有具体CreateTable方法,但在应用程序属性应用程序的配置,调试选项卡,在选项启动盒标上了“反安装,然后重新安装我的packege” ,擦除所有文件始终初始化调试。

2

不知道你使用的是什么语言,但如果你能执行原始的SQL那么你可以使用下面的语法:

CREATE TABLE IF NOT EXISTS ListasEntid (nome text, eletros text); 

这确保了表ListasEntid存在无的摧毁您以前的任何数据。

+0

我正在使用SQLite/C#/ Windows 8应用程序总结此方法CreateTable 陈述:“在数据库上执行”如果不存在则创建表“ 。它还在表的列上创建了任何指定的索引,它使用从指定类型自动生成的模式,稍后可以通过调用GetMapping来访问该模式。我不明白,因为它重新创建表,它已经存在。 –