zoukankan      html  css  js  c++  java
  • Android数据存储操作③SQLite基本操作

    一、SQLiteOpenHelper:

      这个类主要生成一个数据库,并对数据库的版本进行管理。当在程序当中调用这个类的方法getWritableDatabase(),或者getReadableDatabase()方法的时候,如果当时没有数据,那么Android 系统就会自动生成一个数据库。SQLiteOpenHelper 是一个抽象类,我们通常需要继承它,并且实现里边的3 个函数,具体函数如下所示。

      • onCreate(SQLiteDatabase):在数据库第一次生成的时候会调用这个方法,一般我们在这个方法里边生成数据库表。

      • onUpgrade(SQLiteDatabase, int, int) :当数据库需要升级的时候,Android 系统会主动的调用这个方法。一般我们在这个方法里边删除数据表,并建立新的数据表,当然是否还需要做其他的操作,完全取决于应用的需求。

      • onOpen(SQLiteDatabase):这是当打开数据库时的回调函数,一般也不会用到。

    具体实例如下:

    1 private static class DatabaseHelper extends SQLiteOpenHelper {
    2 DatabaseHelper(Context context) {
    3  super(context, DATABASE_NAME, null, DATABASE_VERSION);
    4 }
    5 @Override
    6  public void onCreate(SQLiteDatabase db) {
    7  // sql 语句
    8  String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE
    9  + " text not null, " + BODY + " text not null " + ");";
    10 Log.i("haiyang:createDB=", sql);
    11  //执行这条sql 语句
    12  db.execSQL(sql);
    13 }
    14 @Override
    15  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    16 }
    17 }

    二、数据库操作

    1、得到数据库对象,方法有2个,第一种是用SQLiteOpenHelper对象的getReadableDatabase()、getWritableDatabase()方法。

    第二种是采用openOrCreateDatabase()方法,示例代码如下:

    1 SQLiteDatabase db = openOrCreateDatabase(name,context.MODE_private,null);
    2 db.execSQL(CREATE_SQL);

    注意,执行SQL语句的代码最好放在try catch语句中,增强程序的健壮性!

    2、查询(query):

    query()方法各个参数的含义:

    ①Boolean类型,可选参数,指定返回值是否唯一(官方API解释为true if you want each row to be unique, false otherwise.

    ②string类型,表的名称

    ③string数组,列出所需查询的列的信息

    ④string类型,selection,相当于sql 语句的where 部分,用于过滤需要查询列的信息,可以包含占位符“?”,如果想返回所有的数据,那么就直接置为null

    ⑤string数组,selectionArgs。在selection 部分,你有可能用到"?",那么在selectionArgs 定义的字符串会代替selection 中的"?",用于替换where子句中的"?"数组。

    ⑥string类型,参数为groupBy。定义查询出来的数据是否分组,如果为null 则说明不用分组。

    ⑦string类型,参数为groupBy。定义查询出来的数据是否分组,如果为null 则说明不用分组

    ⑧string类型,参数为orderBy,来描述我们期望的返回值是否需要排序,如果设置为null 则说明不需要排序

    ⑨string类型,可选参数,定义对返回行行数的限制。

    3、cursor和ContentValues

    cursor又叫游标,相当于对底层数据中结果集的指针。ContentValues和Hashtable 比较类似,它也是负责存储一些名值对,但是它存储的名值对当中的名是一个String 类型,

    而值都是基本类型。

    4、delete:

    1 db.delete(Table_name,key_id+"="+rowId,null);

    第三课参数含义:如果在第二个参数当中有"?"符号,那么第三个参数中的字符串会依次替换在第二个参数当中出现的?符号。

    删除表的操作:

    1 String sql = "drop table " + TABLE_NAME;
    2 db.execSQL(sql);

    5、update

    1 cv = new ContentValues(); //创建ContentValues
    2  cv.put(COLUMN_NAME,value);// if not update a record,repeat this.
    3  string where = KEY_ID+"="+row_Id;
    4 db.update(Table_name,cv,where,null);

    6、Insert

    1 ContentValues cv = new ContentValues();
    2 cv.put(COLUMN_NAME,value,null);
    3 db.insert(Table_name,null,cv);

    注:在ListView中的数据更新后可以使用renderListView()进行刷新!

  • 相关阅读:
    mac 配置环境变量
    c语言中的0UL或1UL是什么意思
    javascript类型系统——正则表达式RegExp类型
    javascript运算符——算术运算符
    javascript类型系统——Number数字类型
    javascript类型系统——包装对象
    javascript基础语法——表达式
    valueOf()方法
    toString()方法
    javascript基础语法——变量和标识符
  • 原文地址:https://www.cnblogs.com/leon19870907/p/1990746.html
Copyright © 2011-2022 走看看