sqlite在android的應用1

1、首先對sqlite介紹

sqlite是一個輕量級數據庫,符合ACID的特點

注:Atomicity原子性 一個原子性任務是一個獨立的單元
Consistency一致性 不管是幾個線程共同完成要保持結果的一致性
Isolation隔離性 隔離性是隱藏外部未提交的狀態,通過悲觀鎖和樂觀鎖解決
Durability耐久性 就是說一個狀態提交之前所有的狀態變化都能被記錄,突然斷電也能有保存上個狀態
在windows的迅雷qq數據緩存和android的數據存儲方面都有應用

2、sqlite的特點

(1)單一文件
(2)輕型
(3)無需安裝
(4)嵌入式
(5)跨平臺,開源
(6)弱字段類型
支持NULL: 這個值爲空值

VARCHAR(n):長度不固定且其最大長度爲 n 的字串,n不能超過 4000。
CHAR(n):長度固定爲n的字串,n不能超過 254。
INTEGER: 值被標識爲整數,依據值的大小可以依次被存儲爲1,2,3,4,5,6,7,8.
REAL: 所有值都是浮動的數值,被存儲爲8字節的IEEE浮動標記序號.
TEXT: 值爲文本字符串,使用數據庫編碼存儲(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB數據塊,以輸入的數據格式進行存儲。如何輸入就如何存儲,不改 變格式。
DATA :包含了 年份、月份、日期。TIME: 包含了 小時、分鐘、秒。

3、sqlite的數據使用

首先在windows裏的sqlite.dll文件
迅雷qq數據緩存和android的數據存儲方面都有應用
在android裏、
(1)app運行數據的保存.參數。屬性等
(2)離線功能 下載地圖離線包在沒有網的時候也能看
(3)數據處理 對於一些數據的處理可以寫函數進行處理也可以在數據庫中進行存儲
數據庫的增刪改查常用的操作語句,sqlitedatabase數據庫的使用
這裏寫圖片描述
1、創建數據庫

openOrCreateDatabase(String  path,SQLiteDatabae.CursorFactory  factory)
實例:db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.lingdududu.db/databases/stu.db",null);  

2、創建表
編寫創建表的SQL語句
調用SQLiteDatabase的execSQL()方法來執行SQL語句

private void createTable(SQLiteDatabase db){   
//創建表SQL語句   
String person =create table usertable(_id integer primary key autoincrement,sname text,snumber text)";   
//執行SQL語句   
db.execSQL(person);   
}  

3、增加字段
(1)SQlitedatabase的insert函數
insert (String table ,String nullColumnHack,ContentValues values))
參數1 表名稱,
參數2 空列的默認值
參數3 ContentValues類型的一個封裝了列名稱和列值的Map;
(2)編寫插入數據的SQL語句,直接調用SQLiteDatabase的execSQL()方法來執行
第一種方法的代碼:
(1)方法的實現

private void insertTable(SQLiteDatabase db){   

db.insert("stu_table",null,cValue);    
ContentValues cvalue = new ContentValues();
//增加用戶名
cvalue.put("name","zhang yanyan");
//增加密碼
cvalue.put("passWord","12345");
//調用insert方法
db.insert("person",null,cvalue);

(2) execSQL方法的實現

private void insertTable(SQLiteDatabase db){   
//需要插入的sql語句
String sql = "insert into person (name,password) values ('zhansan','123')"
//sql語句的執行
db.execSQL(sql);

(3) 刪除數據

刪除數據也有兩種方法:
①調用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法
參數1 表名稱
參數2 刪除條件
參數3 刪除條件值數組
②編寫刪除SQL語句,調用SQLiteDatabase的execSQL()方法來執行刪除。
第一種方法的代碼:

private void delete(SQLiteDatabase db) {   
//刪除條件   
String whereClause = "id=?";   
//刪除條件參數   
String[] whereArgs = {String.valueOf(1)};   
//執行刪除   
db.delete("person",whereClause,whereArgs);   
}   

第二種方法的代碼:

private void delete(SQLiteDatabase db) {   
//刪除SQL語句   
String sql = "delete from stu_table where _id = 6";   
//執行SQL語句   
db.execSQL(sql);   
}   

(4)修改數據

修改數據有兩種方法:

①調用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法
參數1 表名稱
參數2 跟行列ContentValues類型的鍵值對Key-Value
參數3 更新條件(where字句)
參數4 更新條件數組

②編寫更新的SQL語句,調用SQLiteDatabase的execSQL執行更新。

第一種方法的代碼:

private void update(SQLiteDatabase db) {   
//實例化內容值
 ContentValues values = new ContentValues();   
//在values中添加內容   
values.put("snumber","101003");   
//修改條件   
String whereClause = "id=?";   
//修改添加參數   
String[] whereArgs={String.valuesOf(1)};   
//修改   
db.update("usertable",values,whereClause,whereArgs);   
}   

第二種方法的代碼:

private void update(SQLiteDatabase db){   
//修改SQL語句   
String sql = "update stu_table set snumber = 654321 where id = 1";   
//執行SQL   
db.execSQL(sql);   
}   

(5)數據的查詢
android數據的查詢通過遊標cursor獲得
public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);

@param table:表名稱
@param columns:列名稱數組
@param selection:條件字句,相當於where
@param selectionArgs:條件字句,參數數組
@param groupBy:分組列
@param having:分組條件
@param orderBy:排序列
@param limit:分頁查詢限制
@param Cursor:返回值,相當於結果集ResultSet

cursor是一個遊標接口,提供了遍歷查詢結果的方法,如移動指針 move(),獲得列值方法getString()
這裏寫圖片描述
例如:

private void query(SQLiteDatabase db) {   
//查詢獲得遊標   
Cursor cursor = db.query ("usertable",null,null,null,null,null,null);   

//判斷遊標是否爲空   
if(cursor.moveToFirst() {   
//遍歷遊標   
for(int i=0;i<cursor.getCount();i++){   
cursor.move(i);   
//獲得ID   
int id = cursor.getInt(0);   
//獲得用戶名   
String username=cursor.getString(1);   
//獲得密碼   
String password=cursor.getString(2);   
//輸出用戶信息 System.out.println(id+":"+sname+":"+snumber);   
}   
}   
}  

(6)刪除
直接調用SQLiteDatabase的execSQL()方法來執行
Java
[java] view plain copy print?在CODE上查看代碼片派生到我的代碼片
private void drop(SQLiteDatabase db){
//刪除表的SQL語句
String sql ="DROP TABLE stu_table";
//執行SQL
db.execSQL(sql);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章