当前位置:首页 > 数据库 > SQlite

java – Android – 如何用表创建Sqlite数据库

参见英文答案 > When is SQLiteOpenHelper onCreate() / onUpgrade() run?                                    14个
我需要创建一个包含3个表的数据库,我这样做如下:

public class DatabaseUtils extends SQLiteOpenHelper {
      private final Context myContext;  
      private SQLiteDatabase DataBase; 

      // Database creation sql statement
      private static final String CREATE_TABLE_CS = "create table "+ TABLE_CS + "(" + COLUMN_CS + " TEXT NOT NULL, " + COLUMN_CE_CID + " INTEGER NOT NULL, "+ COLUMN_CE_PID +" INTEGER NOT NULL);";
      private static final String CREATE_TABLE_SS = "create table "+ TABLE_SS + "(" + COLUMN_SS + " TEXT NOT NULL, " + COLUMN_SUB_CID + " INTEGER NOT NULL, "+ COLUMN_SUB_PID +" INTEGER NOT NULL);";
      private static final String CREATE_TABLE_AS = "create table "+ TABLE_AS + "(" + COLUMN_AS + " TEXT NOT NULL, " + COLUMN_CID + " INTEGER NOT NULL, "+ COLUMN_AID +" INTEGER NOT NULL);";

      public DatabaseUtils(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        DATABASE_PATH =  Environment.getDataDirectory().getAbsolutePath() + "/" +"data/"+ context.getResources().getString(R.string.app_package);
        this.myContext = context;
      }

      @Override
      public void onCreate(SQLiteDatabase database) {
        database.execSQL(CREATE_TABLE_CS);
        database.execSQL(CREATE_TABLE_SS);
        database.execSQL(CREATE_TABLE_AS);
      }
      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(DatabaseUtils.class.getName(),"Upgrading database from version " + oldVersion + " to "+ newVersion + ", which will destroy all old data");
        //db.execSQL("DROP TABLE IF EXISTS " + TABLE_COMMENTS);
        onCreate(db);
      }
}

在我的Activity中,我在onCreate中调用DatabaseUtils类,如下所示:

DatabaseUtils db = new DatabaseUtils(this);

但数据库不是用3个表创建的.我究竟做错了什么?顺便说一句,我正确地拥有所有字符串值.请帮我看看如何创建数据库.

解决方法:

我找到了解决方案.如果我实现如下所示,则永远不会调用DatabaseUtils的onCreate():

 DatabaseUtils db = new DatabaseUtils(this);

在myActivity的onCreate()方法中.我需要在myActivity中调用getWritableDatabase(),如下所示:

DatabaseUtils db = new DatabaseUtils(this);
db.getWritableDatabase();

然后将调用DatabaseUtils的onCreate()并创建表.


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!