編輯:關於Android編程
在Android開發中經常要涉及到對數據的操作。Android本身提供了四種數據存儲方式。包括:SharePreference,SQLite,Content Provider,File。
在Android,數據都是麼私有的,要實現數據共享,正確方式是使用Content Provider。
SQLite: SQLite是一個輕量級的數據庫,支持基本SQL語法,是常被采用的一種數據存儲方式。Android為此數據庫提供了一個名為SQLiteDatabase的類,封裝了一些操作數據庫的API。
SharedPreference: 除SQLite數據庫外,另一種常用的數據存儲方式,其本質就是一個xml文件,常用於存儲較簡單的參數設置。
File: 即常說的文件(I/O)存儲方法,常用語存儲大數量的數據,但是缺點是更新數據將是一件困難的事情。
ContentProvider: Android系統中能實現所有應用程序共享的一種數據存儲方式,由於數據通常在各應用間的是互相私密的,所以此存儲方式較少使用,但是其又是必不可少的一種存儲方式。例如音頻,視頻,圖片和通訊錄,一般都可以采用此種方式進行存儲。每個Content Provider都會對外提供一個公共的URI(包裝成Uri對象),如果應用程序有數據需要共享時,就需要使用Content Provider為這些數據定義一個URI,然後其他的應用程序就通過Content Provider傳入這個URI來對數據進行操作。
本文主要是講一些SQLLite的操作並附上代碼。
SQLite是一種轉為嵌入式設備設計的輕型數據庫,其只有五種數據類型,分別是:
NULL: 空值
INTEGER: 整數
REAL: 浮點數
TEXT: 字符串
BLOB: 大數據
在SQLite中,並沒有專門設計BOOLEAN和DATE類型,因為BOOLEAN型可以用INTEGER的0和1代替true和false,而DATE類型則可以擁有特定格式的TEXT、REAL和INTEGER的值來代替顯示,為了能方便的操作DATE類型,SQLite提供了一組函數,詳見:http://www.sqlite.org/lang_datefunc.html。這樣簡單的數據類型設計更加符合嵌入式設備的要求。
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
/**
* 對表的增刪改查的操作。這裡的表裡只有uid一列作為舉例。
*/
public class DemoDBUtil {
//要操作的表名
public static final String DEMO_DB_NAME = "demo_db_name";
//SQLiteDatabase對象
private SQLiteDatabase sqLiteDatabase;
/**
* 帶參構造方法,初始化SQLiteDatabase。
* @param sqLiteDatabase SQLiteDatabase實例
*/
public DemoDBUtil(SQLiteDatabase sqLiteDatabase){
this.sqLiteDatabase = sqLiteDatabase;
}
/**
* 增加數據。
* @param uid 要新增的uid
*/
public void add(String uid){
ContentValues values = new ContentValues();
values.put("uid", uid);
sqLiteDatabase.insert(DEMO_DB_NAME, null, values);
}
/**
* 刪除表裡所有數據。
*/
public void delete(){
sqLiteDatabase.delete(DEMO_DB_NAME, null, null);
}
/**
* 刪除表裡與uid對應的數據。
* @param uid 某個uid
*/
public void delete(String uid){
sqLiteDatabase.delete(DEMO_DB_NAME, "uid = ? ", new String[]{uid});
}
/**
* 更新表,將表所有uid替換為newUid。
*/
public void update(){
ContentValues values = new ContentValues();
values.put("uid", "newUid");
sqLiteDatabase.update(DEMO_DB_NAME, values, null, null);
}
/**
* 將表裡對應的uid替換為newUid。
* @param uid 表裡的某個uid
*/
public void update(String uid){
ContentValues values = new ContentValues();
values.put("uid", "newUid");
sqLiteDatabase.update(DEMO_DB_NAME, values, "uid = ? ", new String[]{uid});
}
/**
* 查詢表裡所有數據,取得uid對應的值。
*/
public void query(){
Cursor cursor = sqLiteDatabase.query(DEMO_DB_NAME, null, null, null, null, null, null);
while (cursor.moveToNext()) {
String uid = cursor.getString(cursor.getColumnIndex("uid"));
}
if (null != cursor) {
cursor.close();
}
}
/**
* 取得對應uid的值。
* @param uid 表裡的某個uid
*/
public void query(String uid){
Cursor cursor = sqLiteDatabase.query(DEMO_DB_NAME, null, "uid = ? ", new String[]{uid}, null, null, null);
while (cursor.moveToNext()) {
String queryUid = cursor.getString(cursor.getColumnIndex("uid"));
}
if (null != cursor) {
cursor.close();
}
}
/**
* 取得最後一條記錄。
*/
public void queryLastRecord(){
String lastTimeSql = "select * from demo_db_name order by id desc LIMIT 1";
Cursor cursor = sqLiteDatabase.rawQuery(lastTimeSql, null);
while (cursor.moveToNext()) {
String queryUid = cursor.getString(cursor.getColumnIndex("uid"));
}
if (null != cursor) {
cursor.close();
}
}
} 上文主要是針對表的一個簡單的增刪改查的操作,可以根據實際情況修改來滿足項目的需要。
Android最佳實踐之Notification、下拉刷新、內存及性能建議等
Notification通知參考地址:http://developer.android.com/training/notify-user/index.html通知(Not
wifi萬能鑰匙手機版怎樣使用
WiFi萬能鑰匙手機版是一款搜索連接管理Wi-Fi熱點的工具。WiFi萬能鑰匙已經內置逾千萬條的Wi-Fi熱點數據,用戶可分享使用已知的Wi-Fi熱點信息。
Android制作粒子爆炸特效
簡介最近在閒逛的時候,發現了一款粒子爆炸特效的控件,覺得比較有意思,效果也不錯。但是代碼不好擴展,也就是說如果要提供不同的爆炸效果,需要修改的地方比較多。於是我對源代碼進
Android 離線緩存的快速實現
離線緩存是指在有網絡的狀態下將從服務器獲取的網絡數據,如Json 數據緩存到本地,在斷網的狀態下啟動APP時讀取本地緩存數據顯示在界面上,常用的APP(網易新聞、知乎等等