Android: SQLite的使用

原創 by Zoe.zhang (《Android第一行代碼閱讀筆記》)

  • Android 系統內置了數據庫,SQLite是一款輕量級的關係型數據庫,運算速度快,佔用的資源少,一般只須要幾百K的內存,所以很適合用在移動設備上。
  • SQLite 不只支持基本的SQL語法,同時遵循數據庫的ACID事務,相比MySQL等關係型數據庫要簡單不少。(5種關係型數據庫比較
  • SQLite 是輕量級的數據庫,其設計目標是嵌入式,SQLite不是一個獨立的進程,而是做爲程序的一部分,應用程序由編程語言內的API直接調用SQLite,這樣能夠有效得減小數據庫訪問延遲。SQLite將整個數據庫做爲一個單獨的,可跨平臺的文件存儲在主機中;
  • SQLite的寫操做智能串行進行(寫數據時給數據庫加鎖),SQLite的讀操做能夠多任務同時進行。
  • SQLite是一個自給自足的,無服務器(不須要單獨的服務器進程)輕量級的數據庫,使用ANSI-C編寫,並提供了簡單和易於使用的API。
  • 相關參考博客:
    Android 數據庫開發(一)SQLite3概述
    Android SQLite (三 ) 全面詳解(一)
    android之存儲篇_SQLite數據庫_讓你完全學會SQLite的使用
    Android SQLite詳解

0. SQLiteOpenHelper 抽象類

  • Android 提供了一個SQLiteOpenHelper幫助類,這是一個抽象類,裏面咱們須要重寫兩個抽象方法 onCreate() 和onUpgrade(), 在這兩個函數裏實現建立和升級數據庫的邏輯。
  • SQLiteOpenHelper有兩個構造函數,咱們通常使用參數較少的那個構造函數,該方法接收四個參數分別是:(Context,數據庫名,容許返回一個自定義cursor,通常傳入null,當前數據版本號)。
  • 在使用Android 的SQLite以前,須要對SQL基本語句有必定的瞭解。SQLite的數據類型相對來講很簡單,integer表示整型,real表示浮點型,text表示文本類型,blob表示二進制型 等,咱們一般須要在代碼中執行SQL語句才能完成建表操做,以下例所示,咱們一般將建表語句定義成一個字符串常量
//新建MyDatabaseHelper
public class MyDatabaseHelper extends SQLiteOpenHelper{
    
    public static final String CREATE_BOOK = "create table BOOK("
        + "id integer primary key autoincrement,"  //逗號 primary key 設爲主鍵,關鍵字autoincrement 表示自增加
        + "author text,"
        + "price real,"
        + "pages integer,"
        + "name text)";
        
    private Context mContext;
    public MyDatabaseHelper(Context context,String name,CursorFactory factory,int version){
        super(context,name,factory,version);
        mContext = context;
    }
    
    //必須重寫兩個抽象方法
    @Override
    public void onCreate(SQLiteOpenHelper db){
        db.execSQL(CREATE_BOOK);  //執行建表語句
    }
    
    @Override
    public void onUpgrade(SQLiteOpenHelper db,int oldVersion,int newVersion){   
    }
}

1.建立數據庫

  • 數據庫幫助類中有兩個重要的建立數據庫的實例方法:getReadableDatabase()和getwritableDatabase()方法,注意當數據庫不可寫入的時,使用getwritableDatabase()可能會出錯;
  • 通常狀況下,這兩個實例的方法沒有什麼區別,都會檢測數據庫存放目錄下是否有該表,若是沒有則建立該表,若是存在則打開該表。
  • 數據庫文件存放目錄: /data/data/package name/databases/,可使用File Explorer來查看,比較推薦是使用adb shell 進行查看。
private MyDatabaseHelper dbhelper;
    
    dbhelper = new MyDatabaseHelper(this,"Bookstore.db",null,1)  // bookstore.db 表名
    //建立數據庫表
    dbhelper.getWritableDatabase();

<\hahahhahah>html

2.升級數據庫

3.添加數據

4.更新數據

5.刪除數據

6.查詢數據

使用adb shell 對數據庫和表的建立狀況檢查

  • adb是Android SDK中自帶的一個調試工具,使用這個工具能夠直接對鏈接在電腦上的Android設備或者模擬器 進行調試操做,它存放的位置是 SDK的platform-tool目錄下,注意:若是想要在cmd命令行中使用adb工具,首先要把它的路徑配置到環境變量中
  • 在cmd界面輸入 adb shell, 會進入到Android設備的控制檯,而後經過cd命令進入到:cd /data/data/ /databases/目錄下,能夠經過ls命令查看目錄下的全部文件。
  • 經過sqlite命令打開數據庫:sqlite3 bookstore.dbandroid

  • 此外,還有別的方法,能夠將db文件push出來,而後再用相關sqlite軟件打開,相對會更加直觀。sql

相關文章
相關標籤/搜索