歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android中的數據存取 之 SQLite

1.Android中通過SQLite數據庫引擎來實現結構化數據存儲。SQLite是一個嵌入式數據庫引擎,針對內存等資源有限的設備,提供的是一種高效的數據庫引擎。

2.Android提供了創建和使用SQLite數據庫的API。SQLiteDatabase代表一個數據庫對象,提供了操作數據庫的一些方法,另外還有一個SQLiteOpenHelper工具類提供更簡潔的功能。

3. SQLiteOpenHelper是SQliteDatabase的一個幫助類,用來管理數據庫的創建和版本更新。一般用法是定義一個類繼承之,並實現兩個抽象方法onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)類創建和跟新數據庫。

Android中操作數據庫首先要通過一個 類:android.database.sqlite.SQLiteOpenHelper。它封裝了如何打開一個數據庫,其中當然也包含如果數據庫不存在 就創建這樣的邏輯。

SQLiteOpenHelper 類

其中:

getReadableDatabase()得到可讀的數據庫,返回SQLiteDatabase對象,然後通過對象進行數據庫操作。

getWritableDatabase()得到可寫的數據庫,返回SQLiteDatabase對象,然後通過對象進行數據庫操作。

onCreate(SQLiteDatabase db)在第一次創建數據庫時調用。

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)在更改數據庫時都會調用。

onOpen(SQLiteDatabase db)當數據庫打開時調用。

close()關閉數據庫。

看一個例子:

  1. public class SqlLiteHelper extends SQLiteOpenHelper {  
  2.   
  3.     public class DatabaseHelper extends SQLiteOpenHelper {    
  4.         
  5.         private static final int VERSION = 1;    
  6.         
  7.   
  8.         public DatabaseHelper(Context context, String name, CursorFactory factory,    
  9.                 int version) {    
  10.             super(context, name, factory, version);    
  11.         }    
  12.         
  13.         @Override    
  14.         public void onCreate(SQLiteDatabase db) {    
  15.             System.out.println("create a Database");    
  16.             db.execSQL("create table user(id int,name varchar(20))");    
  17.         }    
  18.         
  19.         @Override    
  20.         public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {    
  21.             System.out.println("update a Database");    
  22.             db.execSQL("DROP TABLE IF EXISTS user");  
  23.         }    
  24.         
  25.     }    
  26.   
  27. }

這裡面,如下的語句需要解釋:

super(context, DATABASE_NAME, null, DATABASE_VERSION)

數據庫連接的初始化,中間的那個null,是一個CursorFactory參數,沒有仔細研究這個參數,暫時置空吧。

public void onCreate(SQLiteDatabase db)

這裡面的onCreate是指數據庫onCreate時,而不是DatabaseHelper的onCreate。也就是說,如果已經指定 database已經存在,那麼在重新運行程序的時候,就不會執行這個方法了。要不然,豈不是每次重新啟動程序都要重新創建一次數據庫了!在這個方法中,完成了數據庫的創建工作。也就是那個execSQL()方法。

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

在程序的開發維護過程中,數據庫的結構可能會有變化,那麼這個方法就有用處了。在DatabaseHelper這個對象一創建時,就已經把參數 DATABASE_VERSION傳入,這樣,如果Android發現此版本與現有版本不一致,就會調用這個onUpgrate方法。於是,可以在這裡面實現一些數據的upgrade工作,比如說創建一個臨時表,將數據由臨時表中轉到新的表結構中。需要注意的是,這裡面的onUpgrade是在版本不一致時調用,也就是說不管當前需要的版本高於現有版本還是低於現有版本,都會出發這個方法,類似的這種情況,就需要對oldVersion和 newVersion進行判斷之後再決定使用什麼策略來更新數據。

Copyright © Linux教程網 All Rights Reserved