Android中Sqlite的使用
1 Sqlite的简介
Sqlite是一种非常流行的嵌入式数据库,在android设备与ios设备中都存在,它支持sql语言,消耗的内存低、性能高。Sqlite由sql编译器、内核、后端以及福建,sqlite采用虚拟机与虚拟数据库引擎,使其修改、扩展更加方便。
Sqlite与其他主要的数据库没有什么区别,主要是速度快,同时android对sqlite具有良好的支持,sqlite与其他数据库最主要的区别主要体现在数据类型上,在创建数据表时为列指定特有的数据类型,但是你可以将任何类型的数据放入该列中,在插入数据时,如果是属于该列的数据类型,则直接插入,如果不属于该列的数据类型,则将其转换为该数据类型后再插入。即称之为“弱类型”。
2 在android程序中使用sqlite
Android设备不自定提供数据库,如果需要在自己的应用程序中使用数据库,必须自己创建数据库,并创建表、索引、填充数据等。在使用中android提供了SQLiteOpenHelper用于创建数据库、创建表等,其中封装了创建与更新数据库的逻辑。代码如下:
package com.example.utlities;
import android.content.Context;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteDatabase.CursorFactory;
importandroid.database.sqlite.SQLiteOpenHelper;
public class SqliteHelper extendsSQLiteOpenHelper {
/**
*
* @param context 活动对象,如activity、service等
* @param name 数据库名称
* @param factory 游标工厂,通常为null
* @param version 数据库版本
*/
publicSqliteHelper(Context context, String name, CursorFactory factory,
intversion) {
super(context,name, factory, version);
}
@Override
publicvoid onCreate(SQLiteDatabase db) {
//在数据库创建成功后,创建表视图等操作
}
@Override
publicvoid onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//用于升级数据库
}
@Override
publicvoid onOpen(SQLiteDatabase db) {
super.onOpen(db);
//每次成功打开数据库后被执行
}
}
以下具体介绍在sqlite中如何实现CRUD操作:
2.1 在数据库创建成功后如何获取数据库的实例
通过getReadableDatabase()或getWritableDatabase()获取到SqliteDatabase的实例。代码随后附上。
2.2 创建sql表
创建表时需要调用executeSQL(Stringsql)函数,该函数不具有返回值。
2.3 插入数据
在sqlite中插入数据有两种方式,第一是采用executeSQL(String sql)的方式,另外一种是采用ContentValues与数据库实例提供的insert()函数。
2.4 更新数据
同插入数据一样,具有两种方式,分别为executeSQL(Stringsql)与数据库实例提供的update()函数。
2.5 查询数据
同前者一样,分别可以通过rawQuery(Stringsql)与数据库实例提供的query()函数。
2.6 删除数据
直接调用executeSQL(Stringsql),传入delete语句即可。
以上实例部分代码如下:
package com.example.utlities;
import android.content.Context;
importandroid.database.sqlite.SQLiteDatabase;
public class SqliteService {
privatestatic final int VERSION = 0;
privateSqliteHelper helper;
privatestatic SqliteService service;
privateSqliteService(Context context) {
this.helper= new SqliteHelper(context, "eKontrol", null, VERSION);
}
publicSqliteService getInstance(Context context) {
if(service == null) {
service= new SqliteService(context);
}
returnservice;
}
privateSQLiteDatabase getReadableDatabase() {
SQLiteDatabasedb = null;
if(this.helper != null) {
db= this.helper.getReadableDatabase();
}
returndb;
}
privateSQLiteDatabase getWritableDatabase() {
SQLiteDatabasedb = null;
if(this.helper != null) {
db= this.helper.getWritableDatabase();
}
returndb;
}
/**
* 传入创建语句,如CREATE TABLE [USER](Id INTEGER PRIMARY KEY AUTOINCREMENT,NAMEVARCHAR(20))
* @param sql
*/
publicvoid createSql(String sql) {
SQLiteDatabasedb = this.getWritableDatabase();
db.execSQL(sql);
}
/**
* 传入删除语句,如DELETE FROM [USER] WHERE Id = ?
* @param sql
*/
publicvoid deleteSql(String sql) {
SQLiteDatabasedb = this.getWritableDatabase();
db.execSQL(sql);
}
}
其实关于这方面的实例网上很多,在此我只是作为个人笔记记录下来,方便以后查阅。