Android中使用內置的輕量級數據庫SQLite存儲信息

本文講一下關於SQLite的使用
sql

1、首先咱們須要掌握sql語句:數據庫

一、建立表函數

create table 表名(字段 字段數據類型,字段 字段數據類型...)工具

create table student(_id integer primary key autoincrement,name varchar(10),age integer)spa

二、刪除表code

drop table 表名sqlite

drop table student排序

三、插入數據(常常使用)繼承

insert into 表名[(字段,字段...)] values(字段值,字段值....)事務

insert into student(_id,name) values(1,'zs')

insert into student values(2,'ls',20)

注意:

  1. 若是插入數據時未指定插入的字段  這時values後的數據值應該從表的第一個字段開始按照具體的類型依次插入

  2. 插入數據時要按照條進行插入 不能插入部分數據

    3. 若是存在自動增加的列須要明確指定插入的字段

四、刪除數據

delete from 表名 where xx

delete from student where _id=1

五、修改數據

update 表名 set 字段=字段的新值,字段=字段的新值  where xxx

update student set name='we' where _id=1

六、查詢數據(常常使用)

    select 字段名 from 表名 where xxx group by 分組字段 having 篩選 order by 排序字段 desc(asc)

    select 字段名 from 表名 where xxx order by 排序字段 desc(asc)

    select * from student where _id=2

    select * from student where _id<>2  <>不等於

    select * from student where _id>2 and name='we' and 同時符合兩個條件

    select * from student where _id>2 or name='we'   or 符合其中一個條件

    select * from student where name like '_a'  _ 表示單個字符   %表示任意多個字符

    select * from student where name like '%a%'

    select * from student where name like 'a%'

    select * from student where name is null  判斷某個字段的值是不是null

    select _id as id,name as 姓名,age as 年齡  from student

    select * from student where _id between 1 and 3  1-3之間

    select * from student where _id in(1,3) in(在括號範圍內) id 1或者3

    select * from student limit 0,5  0表示起始的行數 5表示每頁5條

七、聚合函數  sum() avg() max() min() count()

   select sum(age) from student

   select count(*) from student

   select max(age) from student

注:一、sqlite數據庫存儲的位置:data/data/應用程序包名/databases/xx庫文件

二、若是一次性向數據庫中插入大量數據(好比插入1000條),應該怎樣作才最好呢?

答:採用事務批量插入。


2、須要用到一個幫助類SQLiteOpenHelper

建立一個類繼承SQLiteOpenHelper,來建立數據庫或者打開數據庫,重寫如下三個方法。詳見下:

(SQLiteDatabase db) {
    String sql = + Dbutils.+ + Dbutils.+
            + Dbutils.+
            db.execSQL(sql)Log.()}

(SQLiteDatabase dboldVersionnewVersion) {
    (newVersion > oldVersion) {

        Log.()}
}

(SQLiteDatabase db) {
    .onOpen(db)Log.()}


3、一般定義一個數據庫操做工具類,就叫DbManager吧。定義哪些方法,在下面的代碼中都寫了,註釋詳細。

MySqliteHelper (Context context) {
    (== ) {
        = MySqliteHelper(context)}
    }

(SQLiteDatabase dbString sql) {
    (db != ) {
        (!.equals(sql) && sql != ) {
            db.execSQL(sql)}
    }
}

(SQLiteDatabase dbString tableString nullColumnHackContentValues values) {
    count = (db != ) {
        count = db.insert(tablenullColumnHackvalues)}
    count}

(SQLiteDatabase dbString tableContentValues valuesString whereClauseString[] whereArgs) {
    count = (db != ) {
        count = db.update(tablevalueswhereClausewhereArgs)}
    count}

(SQLiteDatabase dbString tableString whereClauseString[] whereArgs) {
    count = (db != ) {
        count = db.delete(tablewhereClausewhereArgs)}
    count}

List<String> (SQLiteDatabase dbString sqlString[] selectionArgs) {
    Cursor cursor = (db != ) {
        cursor = db.rawQuery(sqlselectionArgs)}
    (cursor)}

List<String> (Cursor cursor) {
    List<String> list = ArrayList<String>()(cursor.moveToNext()) {
        indexId = cursor.getColumnIndex(Dbutils.)id = cursor.getInt(indexId)String address = cursor.getString(cursor.getColumnIndex(Dbutils.))list.add(address)}
    list}

List<String> (SQLiteDatabase dbString tableString[] columnsString selectionString[] selectionArgsString groupByString havingString orderBy) {
    Cursor cursor = (db != ) {
        cursor = db.query(tablecolumnsselectionselectionArgsgroupByhavingorderBy)}
    (cursor)}

(SQLiteDatabase db) {
    (db != ) {
        db.close()}
}


4、一般建立一個實體類Dbutils來存放諸如數據庫名稱、表名等信息的靜態常量。

好了,到這裏就差很少了。接下來就只要在組件如Activity中(或者Fragment也行)中建立數據庫,打開數據庫

 MySqliteHelper helper = DbManger.getInstance(getActivity());
SQLiteDatabase db=helper.getWritableDatabase();//建立數據庫,但數據庫已經存在時,此條語句就是打開數據庫

而後就是使用DbManager中的靜態方法對數據庫進行各類操做了。

相關文章
相關標籤/搜索