Android中的SQLITE数据库表

时间:2013-06-09 11:45:44

标签: android sqlite

我想在我的Android应用程序中的一个数据库中创建几个表。

每个表的命名方式都不同,直到程序开始运行之后我才找到名称,所以它都是动态的。

但是,第一个表被创建,而任何新表都没有 我得到“没有这样的表”错误。

这就是我创建表格的方法:

private class SQLiteHelper extends SQLiteOpenHelper {
    private static final String TAG = "SQLiteHelper";
    private String DATABASE_CREATE = "CREATE TABLE IF NOT EXISTS "
            + helper.getTableName() + "(" + helper.getTableColumns() + ");";


    public SQLiteHelper(Context context) {
        super(context, helper.getDatabaseName(), null, helper
                .getDatabaseVersion());
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE);
        Log.d(TAG, "database created");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS " + helper.getTableName());
        onCreate(db);
    }

}

helper是一个传递给DB构造函数的对象

public ProductDB(Context context, IDatabaseHelper helper) {
    this.context = context;
    this.helper = helper;
}

第一次创建数据库时,一切正常,一切都很好, 但是当我需要添加第二个表时,当我尝试访问它时,它会崩溃

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

试试这个:

 SQLiteDatabase db;
 SQLiteHelper dbHelper = new SQLiteHelper(context);
 db = dbHelper.getWritableDatabase();

        db.execSQL("CREATE TABLE IF NOT EXISTS "
            + helper.getTableName() + "(" + helper.getTableColumns() + ")");