SQLite数据库用来储存大量的结构相同的数据,主要参照官方文档
image.png
创建数据库
-
继承SQLiteOpenHelper类
public class MySqliteOpenHelper extends SQLiteOpenHelper{/** * 构造方法 * @param context :上下文 * @param name:数据库名称 * @param factory :游标工厂 * @param version :数据库版本 */ public MySqliteOpenHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } /** * 表结构的初始化方法 */ @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub String sql = "create table info(_id integer primary key autoincrement,name varchar(20))"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub }
}
-
调用getWritableDatabase方法获取数据库操作实例SQLiteDatabase
public void createDb(View view) { MySqliteOpenHelper helper = new MySqliteOpenHelper(this, "mengk.db", null, 1); SQLiteDatabase db = helper.getWritableDatabase(); }
会在data/data下生成相应的数据库文件
数据库文件生成的目录onUpgrade方法#
当数据库升级的时候执行 用来更新表结构 当原来数据库从V1升级到V2 给info表增加phone字段
/**
* 数据库升级的时候执行
* 用来更新表结构
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
String sql = "alter table info add phone varchar(20)";
db.execSQL(sql);
System.out.println("数据库升级了 从1升级到2");
}
public void createDb(View view) {
// MySqliteOpenHelper helper = new MySqliteOpenHelper(this, "mengk.db", null, 1);
MySqliteOpenHelper helper = new MySqliteOpenHelper(this, "mengk.db", null, 2);
SQLiteDatabase db = helper.getWritableDatabase();
}
执行结果
image.png
网友评论