Java 升级sqliteandroid数据库

Java 升级sqliteandroid数据库,java,android,sqlite,sqliteopenhelper,Java,Android,Sqlite,Sqliteopenhelper,我正在编写使用SQLite的应用程序。起初,我的数据库只有一个名为products的表。现在我想再添加一个名为favoriteProduct\u table的表。我在onCreate方法中编写了db.exec(“创建表fav\u产品”)命令,但是我的应用程序崩溃了,说找不到product\u fav的表 这是我在添加收藏夹产品表之前的代码 private static class OpenHelper extends SQLiteOpenHelper { OpenHe

我正在编写使用SQLite的应用程序。起初,我的数据库只有一个名为
products
的表。现在我想再添加一个名为
favoriteProduct\u table
的表。我在
onCreate
方法中编写了
db.exec(“创建表fav\u产品”)
命令,但是我的应用程序崩溃了,说找不到
product\u fav
的表

这是我在添加收藏夹产品表之前的代码

   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);
      }

   }

检查你的问题你问了什么

现在我想再添加一个名为FavoriteProduct\u table的表

然后

db.exec(“创建表fav_产品”)

最后

我的应用程序崩溃,说找不到产品\u fav的表

现在看看是什么错误

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

是否所有这些表(FavoriteProduct\u表fav\u产品product\u fav)彼此不同?

考虑使用“\u id”而不是“id”作为主键,许多Android适配器更希望表实现
BaseColumns
中使用的列,而不是使用任意的pkey名称。