简单使用Android内置SQLite数据库
SQLite介绍
SQLite数据库就像它的名字一样,它是一个很小的关系型数据库,但它基本拥有一般的关系型数据库的基本功能,这对于手机而言,已经不错了,也是手机数据库的比较好的选择。
SQLiteOpenHelper使用方法
SQLiteOpenHelper是一个抽象助手类,我们要使用它,必须继承他,然后必须Override两个回调函数(onCreate和onUpgrade)和一个构造函数。
当创建了SQLiteOpenHelper子类的对象之后,该对象就有了getReadableDatabase()和getWritableDatabase()两个方法,通过这两个方法就能够得到SQLiteDatabase的对象,就可以对数据库进行操作了。
我们需要创建一个继承SQLiteOpenHelper的类,如下代码:
publicclass DBHelper extends SQLiteOpenHelper {
privatestaticfinalint VERSION = 1;
public DBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public DBHelper(Context context, String name,int version){
super(context, name, null, version);
}
public DBHelper(Context context, String name){
super(context, name, null, VERSION);
}
@Override
publicvoid onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
System.out.println("Create!!!");
db.execSQL("create table user(id int,name varchar(20),age int)");
}
@Override
publicvoid onUpgrade(SQLiteDatabase db, int oldV, int newV) {
// TODO Auto-generated method stub
System.out.println("Update!!!");
}
}
代码中实现了3个构造函数,含有4个参数的是必须实现的构造函数,3个参数的主要用于数据库版本的修改,2个参数的用于初始数据库的建立。同时实现了两个回调函数,onCreate是在这个数据库首次被建立的时候,会执行的回调函数,因此,我们在这个函数里创建我们想要的数据表,而onUpgrade回调函数是在数据库版本更新的时候需要执行的函数。
创建更新数据库,增删改查等操作
我们先建立一个Activity,上面有6个按钮,分别表示我们的操作。如图:
首先我们要创建数据库,我们为createDB按钮绑定事件,代码如下:
Button createDB = (Button)findViewById(R.id.createdb);
createDB.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db");//创建DBHelper的对象
SQLiteDatabase db = dbHelper.getReadableDatabase();//得到SQLiteDatabase对象,并调用DBHelper中的回调函数onCreate,创建test_db为名字数据库和建立一个user表
}
});
修改数据库版本,对按钮绑定监听器,代码如下:
Button updateDB = (Button)findViewById(R.id.updatedb);
updateDB.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db",2); //创建DBHelper的对象,使用的是3个参数的构造函数
SQLiteDatabase db = dbHelper.getReadableDatabase();
}
});
代码创建DBHelper的对象,使用的是3个参数的构造函数,由于数据库已存在,所以会执行onUpgrade的回调函数,来对数据库的版本进行修改。
Insert操作
对Insert按钮绑定监听器,代码如下:
Button insert = (Button)findViewById(R.id.insert);
insert.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
ContentValues value = new ContentValues();
value.put("id", 3);
value.put("name","Alice");
value.put("age", 14);
DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db");
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.insert("user", null, value);
}
});
首先创建了ContentValue对象,里面放的是键值对,键对应表中的列名,值就是该列的值。然后用同样的方法创建DBHelper对象,由于是写入数据,所以就dbHelper调用getWritableDatabase()方法来得到一个可写入的SQLiteDatabase对象,然后调用该对象的insert方法将数据插入。
Update操作
对update按钮绑定监听器,代码如下:
Button update = (Button)findViewById(R.id.update);
update.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
ContentValues value = new ContentValues();
value.put("age", 17);
DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db");
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.update("user",value,"id=?",new String[]{"3"});
}
});
上面代码的目的是将Alice的年龄从14岁改为17岁,这里同样创建一个ContentValues的对象,用来存储需要改变的属性的键值对,同样得到一个可写入的SQLiteDatabase对象,然后使用update方法进行修改。Update函数有四个参数,第一个为要修改的表名,第二个为需要修改的键值对ContentValues对象,第3和第4可以看成是where子句,其中?为占位符,后面的String数组中与前面的键一一对应。上面的代码即表示为“where id=3”。
Delete删除操作
对delete按钮绑定监听器,代码如下:
Button delete = (Button)findViewById(R.id.delete);
delete.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db");
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("user","id=?",new String[]{"3"});
}
});
上面代码的目的是将Alice删除,这里同样得到一个可写入的SQLiteDatabase对象,然后使用delete方法进行修改。delete函数有3个参数,第一个为要修改的表名,第2和第3可以看成是where子句,其中?为占位符,后面的String数组中与前面的键一一对应。上面的代码即表示为“where id=3”。
Query查询操作
对query按钮绑定监听器,代码如下:
Button query = (Button)findViewById(R.id.query);
query.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
DBHelper dbHelper = new DBHelper(SQLiteDemoActivity.this,"test_db");
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("user", new String[]{"name","age"}, "id=?",new String[]{"2"}, null,null, null);
while(cursor.moveToNext()){
System.out.println(cursor.getString(cursor.getColumnIndex("name"))+cursor.getString(cursor.getColumnIndex("age")));
}
}
});
代码是要查得id=2的name和age,首先还是得到一个可读的SQLiteDatabase对象,然后使用query方法来得到一个游标来遍历数据表,这个query方法有很多参数,可以这么解释query(表名,所要查的列名组成的字符串数组,where子句的前半部分,where子句的后半部分值,groupby子句,having子句,orderby子句),通过这个方法会返回一个Cursor对象,然后用while循环来遍历数据表。
以上就是SQLite的基本使用方法。
附件为示例代码,仅供参考。
如果我的文章给与了你帮助,就不妨请我喝杯咖啡吧,点击->
转载于:https://blog.51cto.com/theron/654484