每次需要创建一个表的时候就新建一个DBOpenHelper实例,该类的相关代码如下。 private String DB_CREATE; public DBOpenHelper(Context context, String name, CursorFactory factory, int version){
// name为数据库名,dbTable为表名,columns和types分别为需要创建的列及其数据类型。
super(context, name, factory, version);
DB_CREATE = "create table if not exists " + dbTable + " (";
for (int i = 0; i < columns.length-1; i++)
DB_CREATE += ' ' + columns[i] + ' ' + types[i] + ',';
DB_CREATE += ' ' + columns[columns.length-1] + ' ' + types[columns.length-1]+ ");";
}

@Override
public void onCreate(SQLiteDatabase _db) {
_db.execSQL(DB_CREATE);
}
如果要在已有的数据库里再新建一个表,要怎么做呢?直接重复调用的话写不进去……

解决方案 »

  1.   

    DB_CREATE1 = "create table if not exists " + dbTable1 + " (";
                for (int i = 0; i < columns.length-1; i++)
                    DB_CREATE += ' ' + columns[i] + ' ' + types[i] + ',';
                DB_CREATE1 += ' ' + columns[columns.length-1] + ' ' + types[columns.length-1]+ ");";
    DB_CREATE2 = "create table if not exists " + dbTable2 + " (";
                for (int i = 0; i < columns.length-1; i++)
                    DB_CREATE += ' ' + columns[i] + ' ' + types[i] + ',';
                DB_CREATE2 += ' ' + columns[columns.length-1] + ' ' + types[columns.length-1]+ ");";
    DB_CREATE + = DB_CREATE2 + DB_CREATE1
    你看下这样可以不,我记得以前见过别人怎样写过
      

  2.   

    rivate DatabaseHelper mDbHelper;
    private SQLiteDatabase mDb; private static final String DATABASE_NAME = "useraccount.db";
    private static final int DATABASE_VERSION = 2;
    private final Context mCtx; private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    } @Override
    public void onCreate(SQLiteDatabase db) {
    try{
    db.execSQL(Account.DATABASE_CREATE_ACCOUNT);
    }catch(SQLException e){
    Log.i(this.getClass().getName(), e.getMessage());
    }

    } @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS "+Account.TABLE_NAME);
    onCreate(db);
    }

    }
    如果要修改数据库结构的话直接修改一下版本号就行了,android会执行onUpgrade方法