sqlite3的使用
- sqlite有五种本地类型:
INTEGER 整型 REAL 小数 TEXT 文本 BLOB 二进制 NUMERIC 数值
- SQLiteOpenHelper 这个类主要是生成一个数据库,并对数据库的版本进行管理,当在程序中调用这个类的方法getWritableDatabase(),或者getReadableDatabase()方法的时候,如果当时没有数据,那么android系统就会自动生成一个数据库。SQLiteOpenHelper是一个抽象类,需要继承并实现它里面的2个函数。
- ContentValues ContentValues类和Hashmap类似,也是负责存储一些键值对,但是它存储的键值对中的key值必须是字符串,value值必须是基本数据类型。
- Cursor Cursor在android当中是一个非常有用的接口,通过Cursor可以对数据库查询出来的结果集进行随机的读写访问。
SQLiteHelper类:
public class MySQLiteHelper extends SQLiteOpenHelper{
//调用父类构造器
public MySQLiteHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
/**
* 当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行.
* 重写onCreate方法,调用execSQL方法创建表
* */
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists hero_info("
+ "id integer primary key,"
+ "name varchar,"
+ "level integer)");
}
//当打开数据库时传入的版本号与当前的版本号不同时会调用该方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
sqlitehelper的调用:
myHelper = new MySQLiteHelper(this, "my.db", null, 1);//向数据库中插入和更新数据
//获取数据库对象
SQLiteDatabase db = myHelper.getWritableDatabase();
//使用execSQL方法向表中插入数据
db.execSQL("insert into hero_info(name,level) values('bb',0)");
//使用insert方法向表中插入数据
ContentValues values = new ContentValues();
values.put("name", "xh");
values.put("level", 5);
//调用方法插入数据
db.insert("hero_info", "id", values);
//使用update方法更新表中的数据
//清空ContentValues对象
values.clear();
values.put("name", "xh");
values.put("level", 10);
//更新xh的level 为10
db.update("hero_info", values, "level = 5", null);
//关闭SQLiteDatabase对象
db.close();
//查询数据
//获得数据库对象
SQLiteDatabase db = myHelper.getReadableDatabase();
//查询表中的数据
Cursor cursor = db.query("hero_info", null, null, null, null, null, "id asc");
//获取name列的索引
int nameIndex = cursor.getColumnIndex("name");
//获取level列的索引
int levelIndex = cursor.getColumnIndex("level");
for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) {
result = result + cursor.getString(nameIndex)+ "\t\t";
result = result + cursor.getInt(levelIndex)+" \n";
}
cursor.close();//关闭结果集
db.close();//关闭数据库对象