一、SQLite介绍
SQLite是一个小型的内嵌于Android的数据库;我们不需要引入驱动即可访问它;
SQLite可视化工具:SQLite Expert Professional 3;
下载地址:
二、预备阶段
在本节中,我们会为操作数据库做准备,,即本节并不会实际操作数据库,只是做一些前提步骤。下节中,我们将会对操作数据库进行讲解。
主要步骤:
(1)创建某个类(通常称为DatabaseHelper)继承SQLiteOpenHelper,并重写以下三个方法:
public DatabaseHelper(Context context);//带Context参数的构造函数,用来创建数据库public void onCreate(SQLiteDatabase db);//在创建数据库时调用public void onUpgrade(SQLiteDatabase db,int old,int newversion); //数据库版本更改时调用(2)创建数据库:SQLiteOpenHelperhelper = newnew DatabaseOpenHelper(this.getContext());SQLiteDatabase db = helper.getWritableDatabase();(3)SQL语句:db.execSQL(String sql);
具体模板代码如下:
import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class DatabaseHelper extends SQLiteOpenHelper{private static final String TAG = "DatabaseHelper";private static int VERSION = 1;public DatabaseHelper(Context context) {super(context, "test.db", null, VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table 语句");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {Log.i(TAG, "版本更新…");}}
当创建数据库时,database存放在/data/data/package/databases 目录中;
问题1:测试数据库是否能够成功创建
如果你想要测试创建数据库是否成功(你自己写的创建语句是否正确),只需要在AndroidTestCase中写入2行代码:
SQLiteOpenHelperhelper = newnew DatabaseOpenHelper(this.getContext());SQLiteDatabase db = helper.getWritableDatabase();运行测试文件后,即可在/data/data/package/databases中生成db文件,export到本地电脑后,用SQLite可视化工具看下就可以知道。
问题2:如何在onUpdate中完成版本更新
如果想要在版本更新时更新数据库,可以使用以下技巧:
db.execSQL("drop table if exists Table1");//如果存在Table1表,则删除这张表,可以重复执行多次,将全部的表删光。onCreate(db);//再次创建数据库的表结构
这样能够比较圆满的完成版本更新。
三、增删改查操作
本节将会讲解到怎样进行增删改查,首先要注意的是:
db.execSQL() 是执行“修改操作SQL”的。db.rawQuery() 是执行“查询SQL”的。
这些CRUD操作都是封装在SQLiteDatabase类中的。下面分别介绍:
1)获得SQLiteDatabase对象
2)插入操作
3)删除操作
4)查询操作
5)更新操作
1.获得SQLiteDatabase对象
SQLiteOpenHelper helper = new DatabaseHelper(this.getContext());
SQLiteDatabase db = helper.getWritableDatabase();
SQLiteDatabase db = helper.getReadableDatabase();//此函数内部其实也调用了getWritableDatabase()函数,即调用了此函数,也可以写数据
2.insert操作
插入操作有三种方法完成:
举例:
第一种方法:
db.insert("INSERT INTO person(name,age) VALUES(‘xiazdong’,20);");
第二种方法:
db.insert("INSERT INTO person(name,age) VALUES(?,?);", new Object[]{"xiazdong",20});
第三种方法:
ContentValues values = new ContentValues();values.put("name","xiazdong");values.put("age",20);db.insert("tablename",null,values);
有些人肯定想不通为什么第一种方法很累人,这里举个例子:
比如界面要求输入一个name值,如果用户输入了a’b’c’e,那么组拼的SQL语句需要对其中的单引号转义,这比较麻烦,因为需要人工慢慢转才行。
3.delete操作
Android提供了3种方法执行delete操作,其实和INSERT操作差不多。
4.update语句
Android提供了3种方法执行update操作,其实和INSERT操作差不多。
由于第三个方法比较难理解,因此给出一个例子:
为了一些琐事吵架,然后冷战,疯狂思念对方,最后和好。