android内置数据库——SQLLite
概述SQLite
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有ODBC接口,同样比起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
创建数据库
使用SQLiteOpenHepler来创建数据库,首先明白SQLiteOpenHepler是一个抽象类,使用它就要创建自己的帮助类去继承它。
当数据库不可写入的时候(磁盘空间已满),getReadableDatabase()方法返回的对象将以只读的方式打开数据库,而getWritableDatabase()将出现异常。
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK = "create table Book ("
+ "id integer primary key autoincrement, "
+ "author text, "
+ "price real, "
+ "pages integer, "
+ "name text)";
public static final String CREATE_CATEGORY = "create table Category ("
+ "id integer primary key autoincrement, "
+ "category_name text, "
+ "category_code integer)";
}
对数据库的操作
Android提供了创建和是用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。在Android的SDK目录下有sqlite3工具,我们可以利用它创建数据库、创建表和执行一些SQL语句。下面是SQLiteDatabase的常用方法。
SQLiteDatabase的常用方法 :增(insert)、删(Delete)、改(Update)、查(Query)
方法名称 |
方法表示含义 |
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory) |
打开或创建数据库 |
insert(String table,String nullColumnHack,ContentValues values) |
插入一条记录 |
delete(String table,String whereClause,String[] whereArgs) |
删除一条记录 |
query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy) |
查询一条记录 |
update(String table,ContentValues values,String whereClause,String[] whereArgs) |
修改记录 |
execSQL(String sql) |
执行一条SQL语句 |
close() |
关闭数据库 |
每次进行以上操作时,都要创建自己定义继承的帮助类。代码仅供参考
dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2);//创建MyDatabaseHelper对象
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
// 开始组装第一条数据
values.put("name", "The Da Vinci Code");
values.put("author", "Dan Brown");
values.put("pages", 454);
values.put("price", 16.96);
db.insert("Book", null, values); // 插入第一条数据
db.update("Book", values, "name = ?", new String[] { "The Da Vinci Code" });
db.delete("Book", "pages > ?", new String[] { "500" });
关于查询操作,SQLlite有提供query方法,下面是query的参数
query参数多,但不用为每条语句指定所有的查询语句,调用query()方法后会返回一个Cursor对象,查询到的所有数据都将从这个对象中取出。
Cursor游标常用方法
方法名称 |
方法描述 |
getCount() |
获得总的数据项数 |
isFirst() |
判断是否第一条记录 |
isLast() |
判断是否最后一条记录 |
moveToFirst() |
移动到第一条记录 |
moveToLast() |
移动到最后一条记录 |
move(int offset) |
移动到指定记录 |
moveToNext() |
移动到下一条记录 |
moveToPrevious() |
移动到上一条记录 |
getColumnIndexOrThrow(String columnName) |
根据列名称获得列索引 |
getInt(int columnIndex) |
获得指定列索引的int类型值 |
getString(int columnIndex) |
获得指定列缩影的String类型值 |
使用SQL操作数据
具体用方法: