本文講一下關於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)
注意:
若是插入數據時未指定插入的字段 這時values後的數據值應該從表的第一個字段開始按照具體的類型依次插入
插入數據時要按照條進行插入 不能插入部分數據
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中的靜態方法對數據庫進行各類操做了。