安卓平台上面,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()方法。
4,刪除資料,直接呼叫db.delete()方法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);
5,查詢資料,可以參考/**
* 方法刪除資料庫資料
*/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);
}
/**
* 一些查詢用法
*/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資料庫,在應用程式開發中,我們使用最多的無外乎增刪改查。縱使操作簡單,也有可能出現查詢資料緩慢,插入資料耗時等情況,如果出現了這種問題,我們就需要考慮對資料庫操作進行優化了。...