android中SQLite的使用

來源:互聯網
上載者:User

android的四大組件之一的contentprovider用來共用資料,很多應用的provider會繼承它,例如MediaProvider。

在android中操作資料庫要用到幾個類:SQLiteDatabase、SQLiteOpenHelper。SQLitedatabase是一個資料庫類,執行個體化產生資料庫物件。使用時經常要用到助手類SQLiteOpenHelper。但SQLiteOpenHelper是抽象類別,使用時需要繼承然後執行個體化,一般會用DatabaseHelper繼承SQLiteOpenHelper,override父類的回呼函數。

SQLiteOpenHelper是用於建立資料庫和管理版本的助手類,中有抽象方法onCreate()、onUpdate,加上onOpen,三個為回呼函數,在某些時候會自動調用,需要子類override。例如建立時會調用onCreate。通過調用getReadableDatabase() 、getWriteableDatabase() 得到一個SQLitedatabase,進而對資料庫進行增刪改查。

SQLiteDatabase,管理資料庫的外部方法的類。主要有建立、刪除、執行SQL指令等方法,如close()關閉資料庫,delete刪除資料庫的一行,execSQL執行SL指令,insert插入一行。。。

DatabaseHelper類,建構函式很重要。

建立一個資料庫:new Databases()。此時並沒有調用onCreate,而直到getReadableDatabase()後才返回一個SQLiteDatabase對象,即調用了onCreate。建立了的資料庫物件放在/data/data/下,用命令sqlite3 database_name進入操作資料庫模式,可以輸入資料庫語句進行操作。

當發現建構函式中版本資訊發生變化時,自動調用onUpgrade進行升級。

對資料庫進行寫操作時,經常用到contentValue,

更新資料庫就相當於執行update語句。database_name.update(table_name,contentValue_object,where)

查詢query。要用到遊標cursor。在使用cursor時,第一是不斷地往下移動遊標cursor.moveToNext(),第二是判斷下一個記錄是否為空白(if (cursor == null))。要去某一個記錄中某一列的資料,需要兩步,cursor.getString(index), 而index通過getColumnIndex()獲得。

小結:資料庫是自己的弱項,在做多媒體時,總會遇到這樣那樣的資料庫、MediaProvider問題,所以要好好重視一下。

在csdn貼子上又看到了這麼一段挺精鍊的解釋:

什麼是SQLiteDatabase? 
一個SQLiteDatabase的執行個體代表了一個SQLite的資料庫,通過SQLiteDatabase執行個體的一些方法,我們可以執行SQL語句,對資料庫進行增、刪、查、改的操作。需要注意的是,資料庫對於一個應用來說是私人的,並且在一個應用當中,資料庫的名字也是惟一的。
Content Provider:
一般是通過ContentResolver。你可以通過getContentResolver()從一個活動或其它應用程式組件的實現裡擷取一個ContentResolver:
查詢一個內容提供器Querying a Content Provider
你需要三方面的資訊來查詢一個內容提供器:
•用來標識內容提供器的URI
•你想擷取的資料欄位的名字
•這些欄位的資料類型
產生查詢Making the query
你可以使用ContentResolver.query()方法或者Activity.managedQuery()方法來查詢一個內容提供器。兩種方法使用相同的參數序列,而且都返回一個Cursor對象
批次更新記錄Batch updating records
要批次更新一組記錄(例如,把所有欄位中的"NY"改為"New York"),可以傳以需要改變的列和值參數來調用ContentResolver.update()方法。
刪除一個記錄Deleting a record
要刪除單個記錄,可以傳以一個特定行的URI參數來調用ContentResolver.delete()方法。
建立一個內容提供器Creating a Content Provider
要建立一個內容提供器,你必須:
•建立一個儲存資料的系統。大多數內容提供器使用Android的檔案儲存方法或SQLite資料庫來存放它們的資料,但是你可以用任何你想要的方式來存放資料。Android提供SQLiteOpenHelper類來協助你建立一個資料庫以及SQLiteDatabase類來管理它。
•擴充ContentProvider類來提供資料提供者。

聯繫我們

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