Android使用SQLite


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

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() 方法释放游标资源;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值