在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來對資料進行操作。
本文主要是講一些SQLite的操作並附上代碼。
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(); } } }
上文主要是針對錶的一個簡單的增刪改查的操作,可以根據實際情況修改來滿足項目的需要。
以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支援雲棲社區。