SQLite 在 Android 的应用,sqliteandroid应用
Android提供了创建和使用SQLite数据库的API(Application Programming Interface,应用程序编程接口)。
在Android系统中,主要由类SQLiteDatabase和SQLiteOpenHelper对SQLite数据库进行管理和操作。
(一)SQLiteOpenHelper类
SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。
因为是个抽象类,所以必须创建一个类来继承它,并实现两个抽象的方法onCreate()和onUpgrade()方法。
方法 | 说明 |
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) |
构造方法 |
abstract void onCreate(SQLiteDatabase db) | 创建数据库时调用 |
abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) |
升级数据库时调用 |
void onOpen(SQLiteDatabase db) | 打开数据库时调用 |
SQLiteDatabase getReadableDatabase() | 创建或打开数据库 |
SQLiteDatabase getWritableDatabase() | 创建或打开一个读写数据库 |
下面是一个具体的例子:DatabaseHelper.java
private static class DatabaseHelper extends SQLiteOpenHelper { static final String DATABASE_NAME = "College.db"; static final int DATABASE_VERSION = 1; static final String STUDENTS_TABLE_NAME = "students"; static final String CREATE_DB_TABLE = " CREATE TABLE " + STUDENTS_TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, " + " name TEXT NOT NULL, " + " grade TEXT NOT NULL);"; DatabaseHelper(Context context){ super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_DB_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + STUDENTS_TABLE_NAME); onCreate(db); } }
(二)创建数据库
在Activity中创建数据库对象,可能是在onCreate()方法或事件中创建:
DatabaseHelper database = new DatabaseHelper(this); SQLiteDatabase db = null; db = database.getWritableDatabase();
首先实例一个SQLiteOpenHelper帮助类的对象,然后调用该对象的getWritableDatabase() 或 getReadableDatabase()方法 获得SQLiteDatabase 数据库对象。
另外2种创建的方法:
1、应用SQLiteDatabase对象openDatabase()方法及openOrCreateDatabase()方法创建数据库;
2、应用Activity继承于父类android.content.Context创建数据库的方法openOrCreateDatabase()来创建数据库。
此外1、在DDMS中查看,College.db 生成在/data/data/xxxx(包名)/databases路径下。
2、删除数据库文件,应用android.content.Context类的deleteDatabase(String name)方法来删除指定的数据库。
(三)SQLiteDatabase 类
SQLiteDatabase 类的方法有很多,下面是最常用的几个。一般的数据操作,可以使用对应的方法,或者自己写需要的sql语句,再调用execSQL()方法执行。
方法 | 说明 |
openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory) |
打开或创建数据库 |
openDatabase(String path, SQLiteDatabase.CursorFactory factory,int flags) |
打开指定的数据库 |
insert(String table, String nullColumnHack, ContentValues values) |
新增一条记录 |
delete(String table,String whereClause, String[] whereArgs) |
删除一条记录 |
update(String table,ContentValues values, String whereClause,String[] whereArgs) |
修改记录 |
query(String table,String[] columns, String selection, String[]selectionArgs, String groupBy,String having, String orderBy) |
查询一条记录 |
execSQL(String sql) | 执行SQL语句 |
close() | 关闭数据库 |
(四)增删改查
对数据记录的操作处理有两种方法:
- 编写一条对记录进行增、删、改、查的SQL语句,通过exeSQL()方法来执行
- 使用SQLiteDatabase对象的相应方法进行操作
数据添加
insert(String table, String nullColumnHack, ContentValues values)方法
第1个参数table:增加记录的数据表;
第2个参数nullColumnHack:空列的默认值,通常为null;
第3个参数ContentValues:为ContentValues对象,其实就是一个键值对的字段名称,键名为表中的字段名,键值为要增加的记录数据值。通过ContentValues对象的put()方法把数据存放到ContentValues对象中。
ContentValues cv = new ContentValues(); //实例化ContentValues用来装载待插入的数据 cv.put("name","Apple"); //添加学生 cv.put("grade","A"); //添加成绩 db.insert("user",null,cv); //执行插入操作
或者
String sql = "insert into students (name,grade) values ('Apple','A'); db.execSQL(sql);
数据删除
delete(String table,String whereClause, String[] whereArgs)方法
第1个参数table:修改记录的数据表;
第2个参数whereClause:删除数据的条件,相当于SQL语句的where子句;
第3个参数whereArgs:删除条件的参数数组。
String whereClause = "name=?"; //删除的条件 String[] whereArgs = {"Apple"}; //删除的条件参数 db.delete("students",whereClause,whereArgs); //执行删除
或者
String sql = "delete from students where name='Apple'";
db.execSQL(sql);
数据修改
update(String table,ContentValues values,String whereClause, String[] whereArgs)方法
第1个参数table:修改记录的数据表;
第2个参数ContentValues:ContentValues对象,存放已作修改的数据的对象;
第3个参数whereClause:修改数据的条件,相当于SQL语句的where子句;
第4个参数whereArgs:修改数据值的数组。
ContentValues cv = new ContentValues(); //实例化ContentValues cv.put("grade","AA"); //添加要更改的字段及内容 String whereClause = "username=?"; //修改条件 String[] whereArgs = {"Appke"}; //修改条件的参数 db.update("students",cv,whereClause,whereArgs); //执行修改
或者
String sql = "update students set grade = 'AA' where name='Apple'";
db.execSQL(sql);
数据查询
query(String table, String[] columns, String selection,
String[] selectionArgs, String groupBy, String having, String orderBy)方法
第1个参