升级SQLiteDatabase Android

时间:2012-01-27 08:20:32

标签: java android sqlite sqliteopenhelper

我正在编写使用SQLite的应用程序。起初,我的数据库只有一个名为products的表。现在我想再添加一个名为favouriteproduct_table的表。我在db.exec("create table fav_product")方法中编写了onCreate命令,但我的应用程序崩溃,说找不到Product_fav的表格。

在添加favourite_product_table之前,这是我的代码。

   private static class OpenHelper extends SQLiteOpenHelper 
   {

      OpenHelper(Context context) 
      {
         super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }

      @Override
      public void onCreate(SQLiteDatabase db) 
      {

          db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, systemSerID TEXT, systemSerName TEXT, productID TEXT, productName TEXT, productDesc TEXT, productType TEXT, batchID TEXT, minVal TEXT, maxVal TEXT)");

      }

      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
      {
         Log.w("Example", "Upgrading database, this will drop tables and recreate.");
         db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
         onCreate(db);
      }

   }

上面的代码工作正常,但是当我尝试使用以下代码创建一个新表时,我的应用程序崩溃了。

 private static class OpenHelper extends SQLiteOpenHelper 
   {

      OpenHelper(Context context) 
      {
         super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }

      @Override
      public void onCreate(SQLiteDatabase db) 
      {

          db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, systemSerID TEXT, systemSerName TEXT, productID TEXT, productName TEXT, productDesc TEXT, productType TEXT, batchID TEXT, minVal TEXT, maxVal TEXT)");
          db.execSQL("CREATE TABLE " + TABLE_TOPUP_FAVOURITE + "(id INTEGER PRIMARY KEY, systemSerID TEXT, systemSerName TEXT, productID TEXT, productName TEXT, productDesc TEXT, productType TEXT, batchID TEXT, minVal TEXT, maxVal TEXT, imageid TEXT)");
      }

      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
      {
         Log.w("Example", "Upgrading database, this will drop tables and recreate.");
         db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
         onCreate(db);
      }

   }

1 个答案:

答案 0 :(得分:1)

检查您的问题

  

现在我想再添加一个名为 favouriteproduct_table

的表格

然后

  

db.exec(“创建表 fav_product ”)

最后

  

我的应用程序崩溃说没有找到 Product_fav

的表格

现在看看是什么错误。

在你的三个句子表中有不同的名称。

您是否将所有这些表格( favouriteproduct_table fav_product Product_fav )彼此不同?