Android-資料存放區( SQLite )

來源:互聯網
上載者:User

標籤:sqlite   sqliteopenhelper   sqliterdatabase   contentvalues   cursor   

1.回顧

  上篇學習了SharedPreference 的 儲存和擷取;作為補充 說明下 SharedPreference

     1)是一種輕型的資料存放區方式
     2) 本質是基於 xml檔案的 key-value鍵值對資料
     3)通常用來儲存 簡單的配置資訊

     4)預設儲存路徑:/data/data/<包名>/shared_prefs目錄下

2.重點

    (1)SQLite 的 介紹

    (2) 資料類型

    (3)優點

    (4)SQLiteDataBase 

    (5)SQLiteOpenHelper

3.介紹

     開源的嵌入式資料庫,以單個檔案的形式存在
   (1)輕量級,一個動態庫,單檔案
   (2)獨立性,沒有依賴,無須安裝
   (3)隔離性,全部在檔案夾裡
   (4)跨平台
   (5)多語言介面
   (6)安全性,事務:
       通過資料庫上的獨佔性和共用鎖定來實現獨立交易處理;多個線程讀取,一個線程寫入;

4.資料存放區類型

     Null Integer Real Text Blob 
     空 ,整型,浮點型 ,字串值,二進位值 ;動態資料類型( 弱引用),可進行相關資料類型自動轉換

5.優點

   佔用資源少 , 效能良好 ,0 管理成本 ;沒有可用與 Sqlite 的網路伺服器 ;

6.實現

     建立的 db 檔案儲存體在 data/<包名>/databases/ 下

    (1) SQLiteDatabase : 管理資料庫類 建立 刪除 執行 sql命令

    例如:建立表的操作

SQLiteDatabase db=openOrCreateDatabase("yuan.db",MODE_PRIVATE,null);db.execSQL("create table if not exists labelnet(_id integer primary key autoincrement,name text not null,pass text not null)");
   

    上面你的 SQLiteDatabase 建立的 db對象 ,可以執行通過 execSQL () 方法可以執行所有的 sql 語句實現增刪改查 (sql 語句太多,就很噁心);

    

     (2)ContentValues 實現

        使用 ContentValues實現封裝資料 ,後通過 insert() , update() ,delete() , query() 四個方法實現 增刪改查,只需要傳的參數不一樣就行了;

        注意:建立表 還需要的是 sql 語句哦!!!!

    例子:

    新增:調用上面的db對象 ,新增 20條資料

ContentValues values=new ContentValues();for(int i=0;i<20;i++){values.put("name","原");values.put("pass","123456");//傳回值 為 行的 iddb.insert(DBNAME,null, values);values.clear();}
 

   修改:

ContentValues values=new ContentValues();values.put("pass","111111");    //修改db.update(DBNAME, values,"_id>?",new String[]{"10"});

    刪除:

//刪除db.delete(DBNAME,"pass=?",new String[]{"111111"});

   查詢:使用 Cursor實現 ,

Cursor cursor=dbs.query(DBNAME,null,"_id>?",new String[]{"0"},null,null,"_id");String str="資料庫讀取資料";if(cursor!=null){//得到 列明稱String [] curName=cursor.getColumnNames();while(cursor.moveToNext()){for(String cn : curName){Log.i("cursor",cursor.getString(cursor.getColumnIndex(cn)));str+=cursor.getString(cursor.getColumnIndex(cn));}Log.i("cursor","...........................................");str+="\n";}}tv_show.setText(str);

7. SQLiteOpenHelper    7.1 介紹

   協助你建立一個資料庫,你只要繼承 SQLiteOpenHelper 類,就可以輕鬆的建立資料庫。SQLiteOpenHelper 類根據開發應用程式的需要,封裝了建立和更新資料庫使用的邏輯。

   建立類需要繼承 自 SQLiteOpenHelper 類:需要實現幾個方法:onCreate() , onUpgrade() ,和 建構函式

     7.2  例子

package com.example.sqlite;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class DB extends SQLiteOpenHelper {public DB(Context context, String name) {super(context, name, null, 1);}/** * 首次建立 資料庫的時候調用 * 一般 把建庫 和 鍵表操作 放在這裡 */@Overridepublic void onCreate(SQLiteDatabase db) {// 一般 把建庫 和 鍵表操作 放在這裡db.execSQL("create table if not exists yuantest(_id integer primary key autoincrement,name text not null,pass text not null)");}/** * 當資料庫版本發送改名的時候,自動調用 */@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        //當資料庫版本發送改名的時候,自動調用}}


    7.3 使用

     (1) getReadableDatabase()  返回 唯讀資料庫
     (2)getWritableDatabase()     返回  可讀可寫

   實現:

DB db=new DB(this,"yuan.db");SQLiteDatabase dbs=db.getWritableDatabase();

     這樣就返回 db對象了,下面的操作 和 6 一樣了


8.Cursor 遊標 

     不管你如何執行查詢,都會返回一個 Cursor,這是 Android 的 SQLite 資料庫遊標,

 (1)通過使用 getCount() 方法得到結果集中有多少記錄; (2)通過 moveToFirst(), moveToNext(), 和 isAfterLast() 方法遍曆所有記錄; (3)通過 getColumnNames() 得到欄位名;  (4)通過 getColumnIndex() 轉換成欄位號; (5)通過 getString(),getInt() 等方法得到給定欄位目前記錄的值; (6)通過 requery() 方法重新執行查詢得到遊標; (7)通過 close() 方法釋放遊標資源;  使用的時候,一定要釋放遊標資源(佔資源);

9. 總結

   ContentValues 實際上和 Map , HashMap 一樣的,需要清空的時候,就調用 clear()方法




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Android-資料存放區( SQLite )

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.