一、SQLite的介绍:
SQLite,是一款轻型的数据库,目前已经在很多嵌入式产品中使用了它,它占用资源非常的低。可以说对于android设备而言,使用sqlite这种关系型数据库是再合理不过了。对SQLite的使用,主要了解如何完成对数据的增删改查等操作。
二、使用SQLite数据库:
第一步:创建SQLiteOpenHelper对象。
我们可以获得对数据进行增删改查的SQLiteDatabase对象。
创建一个类并且继承SQLiteOpenHelper,然后必须重写其构造方法,onCreate()方法和onUpdate()方法。
onCreate()是第一次数据库创建时调用的。
onUpdate()是在数据库版本号改变调用的。
得到SQLiteOpenHelper对象后,可以通过这个对象的getWritableDatabase()和getReadableDatabase()这两个方法来或得SQLiteDatabase的对象。这两个方法分别用于取得可写的SQLiteDatabase对象与可读的SQLiteDatabase对象。
public class OpenHelper extends SQLiteOpenHelper {
//数据库的版本号
private static final int VERSION = 1;
//数据库的构造方法
/**
* @param name 数据库名
* @param version 数据库版本号
*/
public OpenHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
public OpenHelper(Context context, String name){
this(context,name,VERSION);
}
public OpenHelper(Context context, String name, int version) {
this(context,name,null,version);
}
@Override
public void onCreate(SQLiteDatabase db) {
//当第一次创建数据库时建立person表。包含persionid和name两个字段。
db.execSQL("create table person (personid integer primary key autoincrement,name varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//当数据库版本号改变时,更新person表,增加字段age。
db.execSQL("alter table person add age integer");
}
}
第二步:完成对activity的布局。
布局文件内容如下:
< LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
xmlns:tools= "http://schemas.android.com/tools"
android:layout_width= "match_parent"
android:layout_height= "match_parent"
android:orientation= "vertical"
tools:context= ".MainActivity" >
<Button
android:layout_width= "fill_parent"
android:layout_height= "wrap_content"
android:onClick= "doCreate"
android:text= "@string/oncreate" />
<Button
android:layout_width= "fill_parent"
android:layout_height= "wrap_content"
android:onClick= "doUpdate"
android:text= "@string/onupdate" />
<Button
android:layout_width= "fill_parent"
android:layout_height= "wrap_content"
android:onClick= "insert"
android:text= "@string/insert" />
<Button
android:layout_width= "fill_parent"
android:layout_height= "wrap_content"
android:onClick= "query"
android:text= "@string/query" />
<Button
android:layout_width= "fill_parent"
android:layout_height= "wrap_content"
android:onClick= "delete"
android:text= "@string/delete" />
<Button
android:layout_width= "fill_parent"
android:layout_height= "wrap_content"
android:onClick= "update"
android:text= "@string/update" />
</ LinearLayout>
第三步:完成对数据库的建表及增删改查等操作。
创建activity,为每个按钮完成相应的操作。
1、创建SQLite数据库。
当我们通过SQLiteOpenHelper对象第一次创建数据库时,会回调我们刚才创建的OpenHelper类的onCreate()方法,并且完成对表的建立。
//点击创建数据库时调用的函数
public void doCreate(View v){
helper = new OpenHelper( this, "student", 1);
helper.getReadableDatabase();
}
2、更新SQLite数据库
当我们更改了SQLiteOpenHelper对象的版本号(版本号必须大于或者等于1) 时,会回调OpenHelper的onUpgrade()方法,并且完成对数据库的更新操作。
//点击更新数据库时调用的函数
public void doUpdate(View v){
helper = new OpenHelper( this, "student",2);
helper.getReadableDatabase();
}
3、插入数据。
在对数据的增删改查有两种方法,一种是直接执行sql语句,一种则是面向对象的方式。
//点击插入数据时调用的函数
public void insert(View v){
helper = new OpenHelper( this, "student",2);
SQLiteDatabase db = helper.getWritableDatabase();
//执行sql 语句方式
db.execSQL( "insert into person (name,age) values (?,?)" , new Object[]{"zhangsan" ,22});
//面向对象方式。
ContentValues values = new ContentValues();
values.put( "name", "zhangsi");
values.put( "age", 23);
db.insert( "person", null, values);
db.close();
}
4、查询数据。
//点击查询数据时调用的函数
public void query(View v){
helper = new OpenHelper( this, "student",2);
SQLiteDatabase db = helper.getReadableDatabase();
//执行sql 语句方式
Cursor cursor = db.rawQuery( "select * from person" , null );
while(cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name" ));
int age = cursor.getInt(cursor.getColumnIndex( "age"));
Log. i("MainActivity" , "name=" +name+",age=" +age);
}
db.close();
}
5、删除数据。
//点击删除数据时调用的函数
public void delete(View v){
helper = new OpenHelper( this, "student",2);
SQLiteDatabase db = helper.getWritableDatabase();
//执行sql 语句方式
db.execSQL( "delete from person where personid = ?" , new String[]{"1" });
db.close();
}
6、更新数据。
//点击更新数据时调用的函数
public void update(View v){
helper = new OpenHelper( this, "student",2);
SQLiteDatabase db = helper.getWritableDatabase();
//执行sql 语句方式
db. execSQL( "update person set name=? where personid=?", new String[]{"lixiaolong" ,"2" });
db.close();
}