Android SQLite的基本用法

2021-10-05 08:28:09 字數 4811 閱讀 6321

安卓平台上面,sqlite是常用的資料庫。android也為sqlite封裝了豐富的介面。

下面看看android 平台sqlite的基本用法:

1,建立資料庫和表

先重寫乙個sqliteopenhelper。以下三個介面是必須的。

public class databasehelper extends sqliteopenhelper 

@override

public void oncreate(sqlitedatabase db)

@override

public void onupgrade(sqlitedatabase db, int oldversion, int newversion)

建立資料庫messagedao.db_name,名字自定義為xx.db

sqlitedatabase db = null;

databasehelper sqlitehelper = new databasehelper(this,messagedao.db_name,null,1);

db = sqlitehelper.getwritabledatabase();

這樣就建立了資料庫xx.db。

2,建立表和字段

看這個sql語句。

string sql = "create table if not exists " + messagedao.table_name + " (id integer primary key autoincrement, msg_text text, is_send bit, file_path text) "; db.execsql(sql);

(id integer primary key autoincrement, msg_text text, is_send bit, file_path text) 這裡是自定義的字段和資料型別

這句話的意思是,建立乙個表 messagedao.table_name(表明隨便定義,比如sting table_name = 「student」)。

表面的有id/msg_text/msg_text/file_path四個key,對應的資料資料型別分別是integer /text/bit/text

3 插入資料,建立乙個contentvalues ,裝入資料,用db.insert()方法。

contentvalues values = new contentvalues();

log.d("chenshulin","msg = "+msg.tostring());

// values.put(messagedao.value_id, msg.getmsg());

values.put(messagedao.value_msg_text, msg.getmsg());

values.put(messagedao.value_is_send, msg.issend());

values.put(messagedao.value_filepath,msg.getbindaudiopath());

db.insert(messagedao.table_name,null,values);

4,刪除資料,直接呼叫db.delete()方法

/**

* 方法刪除資料庫資料

*/public void deletepersondata(personmodel model)

);//刪除資料庫裡 _id = 1 的資料

getwritabledatabase().delete(table_name_person,value_id+"=?",new string);

//刪除 age >= 18 的資料

getwritabledatabase().delete(table_name_person,value_age+">=?",new string);

//刪除 id > 5 && age <= 18 的資料

getwritabledatabase().delete(table_name_person,value_id+">?"+" and "+value_age +"<=?",new string);

//刪除 id > 5 || age <= 18 的資料

getwritabledatabase().delete(table_name_person,value_id+">?"+" or "+value_age +"<=?",new string);

//刪除資料庫裡 _id != 1 的資料

getwritabledatabase().delete(table_name_person,value_id+"!=?",new string);

//刪除所有 _id >= 7 的男生

getwritabledatabase().delete(table_name_person,value_isboy+"=?"+" and "+value_id+">=?",new string);

//刪除所有 _id >= 7 和 _id = 3 的資料

getwritabledatabase().delete(table_name_person,value_id+">=?"+" or "+value_id+"=?",new string);

}

5,查詢資料,可以參考

/**

* 一些查詢用法

*/public void querypersondata()

,null,null,null);

//查詢 name = 張三 並且 age > 23 的資料

getwritabledatabase().query(table_name_person,null,value_name+"=?"+" and "+value_age+">?",new string,null,null,null);

//查詢 name = 張三 並且 age > 23 的資料 並按照id 降序排列

getwritabledatabase().query(table_name_person,null,value_name+"=?"+" and "+value_age+">?",new string,null,null,value_id+" desc");

//查詢資料按_id降序排列 並且只取前4條。

getwritabledatabase().query(table_name_person,null,null,null,null,null,value_id+" desc","0,4");

}

/**

* rawquery()方法查詢

** 一些查詢用法

** 容易出錯,萬千注意。

** 注意空格、單引號、單詞不要寫錯了。**/

public cursor rawquerypersondata() );

//查詢 name = 張三 並且 age >= 23 的資料 select * from person where name = '張三' and age >= '23'

rawquerysql = "select * from "+table_name_person+" where "+value_name +" = '張三'"+" and "+ value_age +" >= '23'";

//查詢 name = 張三 並且 age >= 23 的資料 並按照id 降序排列 select * from person where name = '張三' and age >= '23' order by _id desc

rawquerysql = "select * from "+table_name_person+" where "+value_name +" = '張三'"+" and "+ value_age +" >= '23'"+" order by "+value_id +" desc";

//查詢資料按_id降序排列 並且只取前4條。(測試下標是從0開始) select * from person order by _id desc limit 0, 4

rawquerysql = "select * from "+table_name_person+" order by "+value_id +" desc"+" limit 0, 4";

//查詢年齡在20歲以上或者是女生 的資料 select age,isboy from person where age > 20 or isboy != 1

rawquerysql = "select "+value_age+","+value_isboy +" from " +table_name_person+" where "+value_age+" > 20"+" or "+value_isboy +" != 1";

//查詢年齡小於等於20 或者 大於等於 80的資料 並且按年齡公升序排列 select * from person where age <= 20 or age >=80 order by age asc

rawquerysql = "select * from "+table_name_person+" where "+value_age+" <= 20"+" or "+value_age+" >=80"+" order by "+value_age+" asc";

cursor = getwritabledatabase().rawquery(rawquerysql,null);

log.e(tag, rawquerysql );

return cursor;

}

android sqlite基本操作

package com.xiangqiao.sqlite3 import android.content.contentvalues import android.database.cursor import android.database.sqlite.sqlitedatabase import...

關於Android SQLite詳細

一 sqlite簡介 在android平台上,整合了乙個嵌入式關係型資料庫 sqlite,sqlite3支援 null integer real 浮點數字 text 字串文字 和blob 二進位制物件 資料型別,雖然它支援的型別雖然只有五種,但實際上sqlite3也接受varchar n char ...

Android SQlite效能優化

dec 13th,2015 資料庫是應用開發中常用的技術,在android應用中也不例外。android預設使用了sqlite資料庫,在應用程式開發中,我們使用最多的無外乎增刪改查。縱使操作簡單,也有可能出現查詢資料緩慢,插入資料耗時等情況,如果出現了這種問題,我們就需要考慮對資料庫操作進行優化了。...