309 views

Android使用SQLite

SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。

本文主要讲解 SQLite 在 Android 环境中的基本使用。

SQLite 基本上符合 SQL-92 标准,和其他的主要 SQL 数据库没什么区别。它的优点就是高效,Android 运行时环境包含了完整的 SQLite。

Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。

首先创建数据库

Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后进行创建表、索引,填充数据等操作。

Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。

下面示例代码展示了如何继承 SQLiteOpenHelper 创建数据库:

public class DatabaseHelper extends SQLiteOpenHelper {    
    DatabaseHelper(Context context, String name, CursorFactory cursorFactory, int version)
    {    
        super(context, name, cursorFactory, version);    
    }    
    
     @Override   
     public void onCreate(SQLiteDatabase db) {    
         // TODO 创建数据库后,对数据库的操作    
     }    
    
     @Override   
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    
         // TODO 更改数据库版本的操作    
    }    
    
     @Override   
     public void onOpen(SQLiteDatabase db) {    
         super.onOpen(db);      
         // TODO 每次成功打开数据库后首先被执行    
     }    
}

接下来讨论具体如何创建表、以及对数据的增删改查等等。

/*
* 重新建立数据表
*/
private void CreateTable() {
    SQLiteDatabase db = mOpenHelper.getWritableDatabase();
    String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE
        + " text not null, " + BODY + " text not null " + ");";
    Log.i("yilee:createDB=", sql);

    try {
        db.execSQL("DROP TABLE IF EXISTS diary");
        db.execSQL(sql);
        setTitle("数据表成功重建");
    } catch (SQLException e) {
        setTitle("数据表重建错误");
    }
}

/*
* 删除数据表
*/
private void dropTable() {
    SQLiteDatabase db = mOpenHelper.getWritableDatabase();
    String sql = "drop table " + TABLE_NAME;
    try {
        db.execSQL(sql);
        setTitle("数据表成功删除:" + sql);
    } catch (SQLException e) {
        setTitle("数据表删除错误");
    }
}

/*
* 插入两条数据
*/
private void insertItem() {
    SQLiteDatabase db = mOpenHelper.getWritableDatabase();
    String sql = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
        + ") values(‘yilee’, ‘异泪的博客’);";
    try {
        Log.i("yilee:sql1=", sql);
        db.execSQL(sql);
        setTitle("插入数据成功");
    } catch (SQLException e) {
        setTitle("插入数据失败");
    }
}

/*
* 删除其中的一条数据
*/
private void deleteItem() {
    try {
        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
        db.delete(TABLE_NAME, " title = ‘yilee’", null);
        setTitle("删除title为yilee的一条记录");
    } catch (SQLException e) {
        setTitle("删除数据失败");
    }
}

/*
* 在屏幕的title区域显示当前数据表当中的数据的条数。
*/
private void showItems() {

    SQLiteDatabase db = mOpenHelper.getReadableDatabase();
    String col[] = { TITLE, BODY };
    Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
    Integer num = cur.getCount();
    setTitle(Integer.toString(num) + " 条记录");
}

最后一个方法中使用了Cursor类:

不管你如何执行查询,都会返回一个 Cursor,这是 Android 的 SQLite 数据库游标,使用游标,你可以:

通过使用 getCount() 方法得到结果集中有多少记录;
通过 moveToFirst(), moveToNext(), 和 isAfterLast() 方法遍历所有记录;
通过 getColumnNames() 得到字段名;
通过 getColumnIndex() 转换成字段号;
通过 getString(),getInt() 等方法得到给定字段当前记录的值;
通过 requery() 方法重新执行查询得到游标;
通过 close() 方法释放游标资源;

无觅相关文章插件,快速提升流量

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>