詳解Android中一些SQLite的增刪改查操作_Android

來源:互聯網
上載者:User

在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();   }  } } 

上文主要是針對錶的一個簡單的增刪改查的操作,可以根據實際情況修改來滿足項目的需要。

以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.