每次需要创建一个表的时候就新建一个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);
}
如果要在已有的数据库里再新建一个表,要怎么做呢?直接重复调用的话写不进去……
// 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);
}
如果要在已有的数据库里再新建一个表,要怎么做呢?直接重复调用的话写不进去……
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
你看下这样可以不,我记得以前见过别人怎样写过
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方法