每次需要创建一个表的时候就新建一个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);
}
如果要在已有的数据库里再新建一个表,要怎么做呢?直接重复调用的话写不进去……
解决方案 »
- 有没有同步时间接口
- eclipse 调试android程序,logcat显示似乎混乱了,如图
- android阅读word源码谁有呀?或者用什么jar包
- andriod下,模拟器里,运行效果很好,但是放到自己设备上,控件位置有改变,向左上角拥挤些了。但也不是挤到一起,就是不那么均匀了,不知道哪里的分辨率有问题?
- Android权限问题请教
- 移植手写问题
- 人生路上遇到的纠结问题,戳进来看看,帮我分析下吧。谢谢各位了
- 开源信息推送服务器有多少人会用?(国内的)
- 想查一下 android API 或 java 的一些语法,有什么好的方法
- robotium 测试--当APP 编写中存在第三方软件怎么办,获取不到ID
- android seekto 拖动后监听
- android
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方法