Android使用SQLite

来源:互联网 发布:php7 比 java 更难了 编辑:程序博客网 时间:2024/06/07 04:07


本文主要讲解 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, intversion
    {     
        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 每次成功打开数据库后首先被执行     
     }     
}

Android,SQLite

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

/* 
* 重新建立数据表 
*/ 
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() 方法释放游标资源;

原创粉丝点击