Android SQLite 應用詳解

Android、iPhone等都使用SQLite作為數據庫引擎,所以我們就需要掌握一些的SQLite的應用。

SQL數據類型

一般數據采用的固定的靜態數據類型,而SQLite采用的是動態數據類型,會根據存入值自動判斷。
SQLite具有以下五種數據類型:

數據類型 解釋
NULL 空值
INTEGER 帶符號的整型,具體取決有存入數字的范圍大小。
REAL 浮點數字,存儲為8-byte IEEE浮點數
TEXT 字符串文本。
BLOB 二進制對象。

基本的SQL語句

1. 創建表

  • primary key:主鍵
  • autoincrement:自增型變量
  • if not exists :如果創建的表存在就不在創建

"create table if not exists 表名 (id integer primary key autoincrement, 列名1,列名2, 列名3)"

2. 增(插入)

"insert into 表名(列名1,列名2,列名3) values(?,?,?)", new Object[]{列名1的值, 列名2的值, 列名3的值}

3. 刪

"delete from person where 列名 = ?",new String[]{刪除條件}

4. 改(更新)

"update person set 修改的列名 = ? where 修改的列名 = ?", new String[]{原來的值, 修改的值}

5. 查

"select * from person where 查詢的列名 like ?",new String[]{條件}

6.刪除表

drop table if exists 表名

7.清空表

delete from if exists 表名


基本使用

1.獲取SQLiteDatabase對象

SQLiteDatabase database = this.openOrCreateDatabase("person", MODE_PRIVATE, null);

2.創建數據表

database.execSQL("create table person (id integer primary key autoincrement, name, age, sex)");

3.插入三行數據

database.execSQL("insert into person(name,age,sex) values(?,?,?)", new Object[]{"小紅", 18, "女"});
database.execSQL("insert into person(name,age,sex) values(?,?,?)", new Object[]{"小明", 22, "男"});
database.execSQL("insert into person(name,age,sex) values(?,?,?)", new Object[]{"小王", 25, "男"});

4.修改數據

database.execSQL("update person set name = ? where name = ?", new String[]{"小明", "小紅"});

5.查詢數據

注:一般通過cursor來得到查詢數據,而且調用rawQuery來查詢

Cursor cursor = database.rawQuery("select * from person where name like ?",new String[]{"小明"});                
//實例化一個對象                
ArrayList<Map<String,Object>> list = new ArrayList<>();                
//循環取值                
while (cursor.moveToNext()){                    
//獲取數據                   
String name = cursor.getString(1); //列按照從0開始算,1指的是name列
String name = cursor.getString(cursor.getColumnIndex("name"));//或者可以這樣寫
//實例化map對象                    
Map<String,Object> map = new HashMap<>();                    
//添加值                    
map.put("name",name);                    
//將map對象添加list中                    
list.add(map);  
}

6.刪除數據

database.execSQL("delete from person where name = ?",new String[]{"小明"});

一般使用

  • 一般情況下,我們都會新建一個類繼承SQLiteOpenHelper,在其封裝增刪改查四種方法。
  • 在onCreate方法中,寫創建表
  • 在onUpgrade方法中,它會根據版本號來更新表
  • 在封裝方法時,記得傳SQLiteDatabase的對象,因為所有對表的操作都是通過它來的
public class MySQL extends SQLiteOpenHelper {        
  public MySQL(Context context, String name,SQLiteDatabase.CursorFactory factory, int version) { 
        super(context, name, factory, version);        
  }
        
  @Override        
  public void onCreate(SQLiteDatabase db) {            
  //創建表            
       db.execSQL("create table person (id integer primary key autoincrement, name, age, sex)");
  }

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{
    switch(newVersion){ 
      case 1: db.execSQL(第一個版本的建表語句); 
      case 2: db.execSQL(第二個版本的建表語句); 
      case 3: db.execSQL(第三個版本的建表語句); 
    }
}
  • 使用時
//實例化封裝的SQL類
MySQL mySQL = new MySQL(this, "dataCache.db", null, 1);
//通過mySQL獲取SQLiteDatabase對象
SQLiteDatabase database = mySQL.getWritableDatabase();
//之后通過mySQL調用封裝方法
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,766評論 18 399
  • 前言 本文參考轉發摘自:【郭霖博客】http://blog.csdn.net/guolin_blog?viewmo...
    _猜火車_閱讀 5,968評論 0 10
  • LZ-Says:給大家推薦一個網站,有興趣可以查閱,想為大家貢獻一點自己的力量也可以投稿,老大審核通過會發表,更好...
    靜心Study閱讀 990評論 0 3
  • 最美不過人家四月天、作為瑜伽人更需要將瑜伽和季節搭配的惟妙惟肖!如在春暖花開的季節與大自然融為一體讓瑜伽介入。 草...
    曼柔瑜伽閱讀 405評論 1 6
  • 大自然的色彩,實在太奇妙了!今天和灰哥午飯后抽空去公園散了散步,雖然云層還是很厚,但太陽依然溜縫兒露了露臉,陽光下...
    小食光閱讀 294評論 2 0