SQLite是一款轻型的数据库,主要用在嵌入式系统,它占用的资源非常低。SQLite不依赖第三方软件,也不需要安装。数据库中的信息都包含在一个文件中,这个文件可以自由地复制到其它目录或其它机器上。

在Android Studio中,SQLiteDatabase类表示数据库类。通过该类可以实现对数据库中数据的添加、删除、查询和修改等功能。

1 打开/创建数据库文件

通过SQLiteDatabase类的静态方法openDatabase()打开数据库文件,使用静态方法openOrCreateDatabase()方法打开或创建数据库文件。

1.1 openDatabase()方法

该方法的格式为

public static SQLiteDatabase openDatabase(

String path,                                   

SQLiteDatabase.CursorFactory factory,

int flags);



其中,参数path表示要打开或者创建的数据库文件路径;factory表示一个可选的factory类,当开始查询时,可以通过该类来实例化cursor,默认将该参数设置为null;flags指定了访问数据库的模式,可以将该参数指定为OPEN_READWRITE、OPEN_READONLY和CREATE_IF_NECESSARY,这三个标志分别表示读写方式打开数据库、只读方式打开数据库以及如果数据库文件不存在,则创建数据库文件。该方法的返回值是打开或者创建的数据库文件。

SQLiteDatabase DB = SQLiteDatabase.openDatabase(getFilesDir()+"/info.db", null, SQLiteDatabase.CREATE_IF_NECESSARY);



以上代码的功能是在系统文件的目录下创建了打开一个名为”info.db”的数据库文件,如果该数据库文件不存在,则创建该文件。

1.2 openOrCreateDatabase()方法

该方法的格式为

public static SQLiteDatabase openOrCreateDatabase(

File file,                                                  

SQLiteDatabase.CursorFactory factory);



或者

public static SQLiteDatabase openOrCreateDatabase(

String path,

                  SQLiteDatabase.CursorFactory factory);



该方法相当于openDatabase()方法将第三个参数设置为CREATE_IF_NECESSARY。

SQLiteDatabase DB = SQLiteDatabase.openOrCreateDatabase(getFilesDir() + "/info.db", null);



2 操作数据库文件

操作数据库文件,实际上就是对数据库文件中的表和记录进行操作。

2.1 创建表

通过SQL语句在数据库文件中创建表,首先要构建SQL语句,之后通过SQLiteDatabase类执行该语句。

2.1.1 构建SQL语句

使用以下代码构建创建表的SQL语句。

String createSql = "create table user(_id integer primary key autoincrement, username, password)";



以上SQL语句的含义是,创建一个名为“user”的表,该表中的主键类型是整形,且是自动增长的;该表包含“username”域和“password”域。

2.1.2 执行SQL语句

通过SQLiteDatabase类的execSQL()方法来执行SQL语句。该方法的格式为

public void execSQL(String sql)

             throws SQLException



其中,参数sql表示要执行的SQL语句。

DB.execSQL(createSql);



以上代码执行了创建表的SQL语句,DB是在“1 打开/创建数据库文件”中创建的数据库类的对象。

2.2 创建记录

创建记录的方法与创建表的方法类似,首先构建SQL语句,之后执行该语句。

String insertSql = "insert into user(username, password) values(?,?)";
DB.execSQL(insertSql, new  String[]{"yang", "123"});



以上代码的功能是在“user”表中插入了一个记录,该记录的username域的值是“yang”,“password”域的值是“123”。

2.3 删除记录

String deleteSql = "delete from user where username=?";
DB.execSQL(deleteSql, new String[]{"yang"});



以上代码的作用是在user表中删除用户名为“yang”的记录。

2.4 修改记录

String updateSql = "update user set username=?,password=? where _id=?";
DB.execSQL(updateSql, new String[]{"yang", "456", "0"});



以上代码的作用是将user表中ID为0的记录的”username”域的值设置为“yang”,“password”域得值设置为“456”。

2.5 查询记录

与以上操作记录使用的方法不同,查询记录时使用的是SQLiteDatabase类的rawQuery()方法。该方法的格式为

public Cursor rawQuery(String sql,

                       String[] selectionArgs)



其中,参数sql指定了查询记录的SQL语句;selectionArgs指定了sql中包含的?所代表的值,如果sql中不包含?,则该参数可以设置为null。rawQuery()方法的返回值是查询到的结果,其类型为Cursor。

String selectSql = "select _id, username, password from user";
Cursor cursor = DB.rawQuery(selectSql, null);



以上代码的作用是查询表user中的所有记录,并将记录保存在cursor中。

2.6 关闭数据库

调用SQLiteDatabase类的close()方法关闭打开的数据库。

DB.close();