• Android内置的Sqlite操作


    今天发现的一片好文章,和大家分享一下

    使用Android SDK内自带的SQLiteOpenHelper,可以方便的对SQLite数据库进行操作,由于手机平台所限,手机上的SQLite不能进行非常复杂的select,但是一般的增删改查功能也相当齐全,足够满足移动平台的使用。

    首先,我们需要继承SQLiteOpenHelper这个类,并覆盖两个抽象方法

     1 public class TestDatabase extends SQLiteOpenHelper {
     2          public TestDatabase(Context context) {
     3                  // 创建一个名为test_db的数据库
     4                 super(context, "test_db", null, 1);
     5          }
     6 
     7          @Override
     8          public void onCreate(SQLiteDatabase db) {
     9                   // 执行时,若表不存在,则创建之,注意SQLite数据库中必须有一个_id的字段作为主键,否则查询时将报错
    10                 String sql = "create table mytable (_id integer primary key autoincrement, stext text)";
    11                  db.execSQL(sql);
    12          }
    13 
    14          @Override
    15          public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    16                  // 数据库被改变时,将原先的表删除,然后建立新表
    17                 String sql = "drop table if exists mytable";
    18                  db.execSQL(sql);
    19                  onCreate(db);
    20          }
    21  }



    随后就是增删改查的方法

     1 public Cursor select() {
     2          SQLiteDatabase db = getReadableDatabase();
     3          Cursor cur = db.query("mytable", null, null, null, null, null, null);
     4          return cur;
     5  }
     6 
     7 public long insert(String text){
     8          SQLiteDatabase db = getWritableDatabase();
     9          ContentValues cv = new ContentValues();
    10          cv.put("stext", text);
    11          long row = db.insert("mytable", null, cv);
    12          return row;
    13  }
    14 
    15 public int delete(int id){
    16          SQLiteDatabase db = getWritableDatabase();
    17          String where = "_id=?";
    18          String[] whereValue = {Integer.toString(id)};
    19          return db.delete("mytable", where, whereValue);
    20  }
    21 
    22 public int update(int id, String text){
    23          SQLiteDatabase db = getWritableDatabase();
    24          String where = "_id=?";
    25          String[] whereValue = {Integer.toString(id)};
    26          ContentValues cv = new ContentValues();
    27          cv.put("stext", text);
    28          return db.update("mytable", cv, where, whereValue);
    29  }


    其中db.query方法参数比较复杂,这里全部置null是为了图个省事,它的具体参数如下:
    public Cursor query (String table,String[] columns, String selection, String[] selectionArgs, StringgroupBy, String having, String orderBy)

    table: 表名称,不可为null
    columns: 要返回的列名数组,置null表示返回所有列
    selection: where子句,如果不需要where子句则置null,写法如"_id=?",此处将要填的参数写为?,供下方的selectionArgs填充
    selectionArgs: where子句的所需值,该数组将依次填充selection中的每一个问号。
    groupby: GroupBy子句
    having: Having子句
    orderBy: order by 子句

  • 相关阅读:
    8.09_python_lx_shopping
    8.06_python_lx_day25
    8.05_python_lx_day24
    8.05_python_lx_day23
    8.03_python_lx_day21<2>
    Java注解
    Java多线程04
    Java多线程03
    Java多线程02
    Java多线程01
  • 原文地址:https://www.cnblogs.com/ProgrammerHu/p/Android_2013_06_01.html
Copyright © 2020-2023  润新知