1. 程式人生 > >Android:SQLiteOpenHelper類(SQLlite資料庫操作)詳細解析

Android:SQLiteOpenHelper類(SQLlite資料庫操作)詳細解析

前言

  • SQLite資料庫操作在Android開發中非常常用
  • 今天我將帶大家全面瞭解關於SQLite資料庫的操作(增、刪、查、改)

目錄

目錄

1. SQLite資料庫介紹

  • SQLite是Android內建的一個小型、關係型、屬於文字型的資料庫。

    Android提供了對 SQLite資料庫的完全支援,應用程式中的任何類都可以通過名稱來訪問任何的資料庫,但是應用程式之外的就不能訪問。

  • Android中,通過SQLiteOpenHelper類來實現對SQLite資料庫的操作。

2. SQLiteOpenHelper類介紹

  • 定義:SQLiteOpenHelper是一個輔助類
  • 作用:管理資料庫(建立、增、修、刪) & 版本的控制。
  • 使用過程:通過建立子類繼承SQLiteOpenHelper類,實現它的一些方法來對資料庫進行操作。

    在實際開發中,為了能夠更好的管理和維護資料庫,我們會封裝一個繼承自SQLiteOpenHelper類的資料庫操作類,然後以這個類為基礎,再封裝我們的業務邏輯方法。

  • SQLiteOpenHelper類的資料庫操作方法介紹
方法名 作用 備註
onCreate() 建立資料庫 建立資料庫時自動呼叫
onUpgrade() 升級資料庫
close() 關閉所有開啟的資料庫物件
execSQL() 可進行增刪改操作, 不能進行查詢操作
query()、rawQuery() 查詢資料庫
insert() 插入資料
delete() 刪除資料
getWritableDatabase() 建立或開啟可以讀/寫的資料庫 通過返回的SQLiteDatabase物件對資料庫進行操作
getReadableDatabase() 建立或開啟可讀的資料庫 同上

3. 常見資料庫使用

資料庫操作無外乎:“增刪查改”:
  1. 對於“增、刪、改(更新)”這類對錶內容變換的操作,需先呼叫getWritableDatabase()
    獲得一個可寫資料庫物件,在執行的時候呼叫通用的execSQL(String sql)或或對應的操作API方法:insert()、delete()、update()
  2. 對“查”,需要呼叫getReadableDatabase()獲得一個可讀的資料庫物件,然後使用query()或rawQuery()方法

    查詢資料庫不能使用execSQL方法


下面我將一一介紹。

3.1 建立資料庫

  • 涉及的方法有onCreate()、getWritableDatabase()、getReadableDatabase()
  • 具體程式碼如下:

    假設DatabaseHelper類是SQLiteOpenHelper的子類


DatabaseHelper.java
//第一次建立資料庫的時候回撥該方法
//當使用getReadableDatabase()方法獲取資料庫例項的時候, 如果資料庫不存在, 就會呼叫這個方法;

//作用:建立資料庫表:將建立資料庫表的 execSQL()方法 和 初始化表資料的一些 insert()方法寫在裡面;
    @Override  
    public void onCreate(SQLiteDatabase db) {  

        //SQLite資料建立支援的資料型別: 整型資料,字串型別,日期型別,二進位制的資料型別  
        //建立了一個名為person的表
        String sql = "create table person(id integer primary key autoincrement,name varchar(64),address varchar(64))";  
        //execSQL用於執行SQL語句
        //完成資料庫的建立   
        db.execSQL(sql); 
        //資料庫實際上是沒有被建立或者開啟的,直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一個被呼叫時才會進行建立或者開啟 
        //見下程式碼
*MainActivity.java*
// 建立DatabaseHelper物件
// 只執行這句話是不會建立或開啟連線的
            SQLiteOpenHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
                    "test_carson");
            // 呼叫getReadableDatabase()或getWritableDatabase()才算真正建立或開啟資料庫
            SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase();

//SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase() ;

3.2 插入資料

  • 步驟:建立並開啟資料庫(可讀/寫)、插入資料
  • 涉及方法:getWritableDatabase()、insert()
    insert()也可以使用excelSQL()代替
  • 具體程式碼如下:
//1. 建立並開啟資料庫

// 建立DatabaseHelper物件(記得傳入最新版本的資料庫)
// 只執行這句話是不會建立或開啟連線的
//注意,一定要傳入最新的資料庫版本號
            SQLiteOpenHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
                    "test_carson"2);
           // 呼叫getWritableDatabase()方法建立或開啟一個可以讀的資料庫
          //通過返回的SQLiteDatabase物件對資料庫進行操作
            SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase();

//2. 建立並開啟資料庫
            // 建立ContentValues物件
            ContentValues values = new ContentValues();

            // 向該物件中插入鍵值對
            values.put("id", 1);
            values.put("name", "yangyz");
          //其中,key代表列名,value代表該列要插入的值
          //注:ContentValues內部實現就是HashMap,但是兩者還是有差別的
          //ContenValues Key只能是String型別,Value只能儲存基本型別資料,不能儲存物件

            // 呼叫insert()方法將資料插入到資料庫當中
            sqliteDatabase.insert("user", null, values);
            // 第一個引數:要操作的表名稱
            // 第二個引數:SQl不允許一個空列,如果ContentValues是空的,那麼這一列被明確的指明為NULL值
            // 第三個引數:ContentValues物件

////db.execSQL("insert into user (id,name) values (1,'張三')")  也可以

        }

3.3 修改資料(升級資料庫)

  • 涉及的方法有onUpgrade()、getWritableDatabase()、update()
  • 具體程式碼如下:

DatabaseHelper.java


//資料庫版本號
 private static final int DATABASE_VERSION = 1; 

//作用:更新資料庫表結構
//呼叫時機:資料庫版本發生變化的時候回撥(取決於資料庫版本)
// 建立SQLiteOpenHelper子類物件的時候,必須傳入一個version引數
//該引數就是當前資料庫版本, 只要這個版本高於之前的版本, 就會觸發這個onUpgrade()方法,如下面程式碼
@Override  
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
        //使用SQL的ALTER語句
        String sql = "alter table person add sex varchar(8)";  
        db.execSQL(sql);  
    }  
//引數說明: 
// db : 資料庫 
//oldVersion : 舊版本資料庫 
//newVersion : 新版本資料庫 
//注意:這裡的刪除等操作必須要保證新的版本必須要比舊版本的版本號要大才行。[即 Version 2.0 > Version 1.0 ] 所以這邊我們不需要對其進行操作。

MainActivity.java

            // 建立一個DatabaseHelper物件
            // 建立SQLiteOpenHelper子類物件的時候,必須傳入一個version引數
//該引數就是當前資料庫版本, 只要這個版本高於之前的版本, 就會觸發這個onUpgrade()方法,如下面程式碼
////注意,一定要傳入最新的資料庫版本號
            // 傳入版本號為2,大於舊版本(1),所以會呼叫onUpgrade()升級資料庫
            DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
                    "test_carson", 2);

            // 呼叫getWritableDatabase()得到一個可寫的SQLiteDatabase物件
            SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase();

            // 建立一個ContentValues物件
            ContentValues values = new ContentValues();
            values.put("name", "zhangsan");

            // 呼叫update方法修改資料庫
            sqliteDatabase.update("user", values, "id=?", new String[] { "1" });
            // 第一個引數String:表名
            // 第二個引數ContentValues:ContentValues物件(需要修改的)
            // 第三個引數String:WHERE表示式,where選擇語句, 選擇那些行進行資料的更新, 如果該引數為 null, 就會修改所有行;?號是佔位符
            // 第四個引數String[]:where選擇語句的引數, 逐個替換 whereClause 中的佔位符;

3.4 刪除資料

  • 步驟:建立並開啟資料庫(可讀/寫)、刪除資料
  • 涉及方法:getWritableDatabase()、delete()
    delete()也可以使用excelSQL()代替
  • 具體程式碼如下:
//1. 建立並開啟資料庫

// 建立DatabaseHelper物件
// 只執行這句話是不會建立或開啟連線的
////注意,一定要傳入最新的資料庫版本號
            SQLiteOpenHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
                    "test_carson"2);
           // 呼叫getWritableDatabase()方法建立或開啟一個可以讀的資料庫
          //通過返回的SQLiteDatabase物件對資料庫進行操作
            SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase();


//2. 刪除資料

            //呼叫delete方法進行刪除操作
            sqliteDatabase.delete("user", "id=?", new String[]{"1"});

            //第一個引數String:需要操作的表名
            //第二個引數String:where選擇語句, 選擇哪些行要被刪除, 如果為null, 就刪除所有行;
            //第三個引數String[]: where語句的引數, 逐個替換where語句中的 "?" 佔位符;

3.5 查詢資料

  • 步驟:建立並開啟資料庫(可讀)、查詢資料
  • 涉及方法:getReadableDatabase()、query() 或 rawQuery(),介紹如下:
//第一種最為簡單
//將所有的SQL語句都組織到一個字串中,使用佔位符代替實際引數(selectionArgs)
db.rawQuery(String sql, String[] selectionArgs);  


db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy);  
db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);  
db.query(String distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);  

//引數說明
//table:要操作的表明
//columns:查詢的列所有名稱集
//selection:WHERE之後的條件語句,可以使用佔位符
//groupBy:指定分組的列名
//having指定分組條件,配合groupBy使用
//orderBy指定排序的列名
//limit指定分頁引數
//distinct可以指定“true”或“false”表示要不要過濾重複值

//所有方法將返回一個Cursor物件,代表資料集的遊標

//Cursor物件常用方法如下:
c.move(int offset); //以當前位置為參考,移動到指定行  
c.moveToFirst();    //移動到第一行  
c.moveToLast();     //移動到最後一行  
c.moveToPosition(int position); //移動到指定行  
c.moveToPrevious(); //移動到前一行  
c.moveToNext();     //移動到下一行  
c.isFirst();        //是否指向第一條  
c.isLast();     //是否指向最後一條  
c.isBeforeFirst();  //是否指向第一條之前  
c.isAfterLast();    //是否指向最後一條之後  
c.isNull(int columnIndex);  //指定列是否為空(列基數為0)  
c.isClosed();       //遊標是否已關閉  
c.getCount();       //總資料項數  
c.getPosition();    //返回當前遊標所指向的行數  
c.getColumnIndex(String columnName);//返回某列名對應的列索引值  
c.getString(int columnIndex);   //返回當前行指定列的值  
  • 具體程式碼如下:
//1. 建立並開啟資料庫

// 建立DatabaseHelper物件
// 只執行這句話是不會建立或開啟連線的
////注意,一定要傳入最新的資料庫版本號
            SQLiteOpenHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
                    "test_carson"2);
           // 呼叫getReadableDatabase()方法建立或開啟一個可以讀的資料庫
          //通過返回的SQLiteDatabase物件對資料庫進行操作
            SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase();

//2. 查詢資料

// 呼叫SQLiteDatabase物件的query方法進行查詢
// 返回一個Cursor物件:由資料庫查詢返回的結果集物件
            Cursor cursor = sqliteDatabase.query("user", new String[] { "id",
                    "name" }, "id=?", new String[] { "1" }, null, null, null);

             // 第一個引數String:表名
            // 第二個引數String[]:要查詢的列名
            // 第三個引數String:查詢條件
            // 第四個引數String[]:查詢條件的引數
            // 第五個引數String:對查詢的結果進行分組
            // 第六個引數String:對分組的結果進行限制
            // 第七個引數String:對查詢的結果進行排序

// 將游標移動到下一行,從而判斷該結果集是否還有下一條資料
//如果有則返回true,沒有則返回false
            while (cursor.moveToNext()) {
                id = cursor.getString(cursor.getColumnIndex("id"));
                name = cursor.getString(cursor.getColumnIndex("name"));
            }


//也可將Cursor中的資料轉為 ArrayList<Map<String, String>> 型別資料
private ArrayList<Map<String, String>> cursor2list(Cursor cursor) {  
    ArrayList<Map<String, String>> list = new ArrayList<Map<String,String>>();  

    //遍歷Cursor  
    while(cursor.moveToNext()){  
        Map<String, String> map = new HashMap<String, String>();  
        map.put("tittle", cursor.getString(1));  
        map.put("content", cursor.getString(2));  
        list.add(map);  
    }  
    return list;  
}  

3.6 關閉資料庫

當我們完成了對資料庫的操作後,記得呼叫SQLiteDatabase的close()方法釋放資料庫連線,否則容易出現SQLiteException。

  SQLiteOpenHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
                    "test_carson");
           // 呼叫getReadableDatabase()方法建立或開啟一個可以讀的資料庫
          //通過返回的SQLiteDatabase物件對資料庫進行操作
            SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase();

//關閉當前資料庫  
        sqliteDatabase.close();  

3.7 刪除資料庫

  SQLiteOpenHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,
                    "test_carson");
           // 呼叫getReadableDatabase()方法建立或開啟一個可以讀的資料庫
          //通過返回的SQLiteDatabase物件對資料庫進行操作
            SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase();

      //刪除名為test.db資料庫  
      deleteDatabase("test.db");  

特別注意

其實對於上述所有的資料庫操作(除了“查詢”),我們都可以使用下列方法代替:

db.executeSQL(String sql);  
db.executeSQL(String sql, Object[] bindArgs);
//sql語句中使用佔位符,然後第二個引數是實際的引數集  

個人建議都使用SQL語句,因為:

  • SQL語句較為通用;
  • 使用insert()、delete()、query()方法具備多個引數,使用複雜

4. 例項Demo

  • Demo描述:建立資料庫並對資料庫進行操作(增、刪、查、改)
  • 實現步驟:
    1. 實現子類繼承SQLiteOpenHelper類(複寫onCreat()、onUpgrade())
    2. 在MainActivity裡實現需要進行的資料庫操作(增、刪、查、改)

4.1 具體程式碼如下:

步驟1:實現子類繼承SQLiteOpenHelper類(複寫onCreat()、onUpgrade())

MySQLiteOpenHelper.java

package scut.carson_ho.database_demo;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Carson_Ho on 16/11/18.
 */
public class MySQLiteOpenHelper extends SQLiteOpenHelper {


    //資料庫版本號
    private static Integer Version = 1;


    //在SQLiteOpenHelper的子類當中,必須有該建構函式
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
                          int version) {
        //必須通過super呼叫父類當中的建構函式
        super(context, name, factory, version);
    }
    //引數說明
    //context:上下文物件
    //name:資料庫名稱
    //param:factory
    //version:當前資料庫的版本,值必須是整數並且是遞增的狀態

    public MySQLiteOpenHelper(Context context,String name,int version)
    {
        this(context,name,null,version);
    }


    public MySQLiteOpenHelper(Context context,String name)
    {
        this(context, name, Version);
    }

    //當資料庫建立的時候被呼叫
    @Override
    public void onCreate(SQLiteDatabase db) {

        System.out.println("建立資料庫和表");
        //建立了資料庫並建立一個叫records的表
        //SQLite資料建立支援的資料型別: 整型資料,字串型別,日期型別,二進位制的資料型別
        String sql = "create table user(id int primary key,name varchar(200))";
        //execSQL用於執行SQL語句
        //完成資料庫的建立
        db.execSQL(sql);
        //資料庫實際上是沒有被建立或者開啟的,直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一個被呼叫時才會進行建立或者開啟


    }

    //資料庫升級時呼叫
    //如果DATABASE_VERSION值被改為2,系統發現現有資料庫版本不同,即會呼叫onUpgrade()方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        System.out.println("更新資料庫版本為:"+newVersion);
    }


}


步驟2:在MainActivity裡實現需要進行的資料庫操作(增、刪、查、改)

MainActivity.java

package scut.carson_ho.database_demo;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button instablish;
    private Button insert;
    private Button upgrade;
    private Button modify;
    private Button delete;
    private Button query;
    private Button delete_database;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //繫結按鈕
        instablish = (Button) findViewById(R.id.instablish);
        insert = (Button) findViewById(R.id.insert);
        upgrade = (Button) findViewById(R.id.upgrade);
        modify = (Button) findViewById(R.id.modify);
        delete = (Button) findViewById(R.id.delete);
        query = (Button) findViewById(R.id.query);
        delete_database = (Button) findViewById(R.id.delete_database);

        //設定監聽器
        instablish.setOnClickListener(this);
        insert.setOnClickListener(this);
        upgrade.setOnClickListener(this);
        modify.setOnClickListener(this);
        delete.setOnClickListener(this);
        query.setOnClickListener(this);
        delete_database.setOnClickListener(this);

    }

//設定每個按鈕對資料庫的操作進行控制
    @Override
    public void onClick(View v) {
        switch (v.getId()) {


            //點選建立資料庫庫
            case R.id.instablish:

                // 建立SQLiteOpenHelper子類物件
                MySQLiteOpenHelper dbHelper = new MySQLiteOpenHelper(this,"test_carson");
                //資料庫實際上是沒有被建立或者開啟的,直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一個被呼叫時才會進行建立或者開啟
                SQLiteDatabase  sqliteDatabase = dbHelper.getWritableDatabase();
                // SQLiteDatabase  sqliteDatabase = dbHelper.getReadbleDatabase();

                break;

            //點選更新資料
            case R.id.upgrade:

                // 建立SQLiteOpenHelper子類物件
                MySQLiteOpenHelper dbHelper_upgrade = new MySQLiteOpenHelper(this,"test_carson",2);
                // 呼叫getWritableDatabase()方法建立或開啟一個可以讀的資料庫
                SQLiteDatabase  sqliteDatabase_upgrade = dbHelper_upgrade.getWritableDatabase();
                // SQLiteDatabase  sqliteDatabase = dbHelper.getReadbleDatabase();

                break;

            //點選插入資料到資料庫
            case R.id.insert:

                System.out.println("插入資料");

                // 建立SQLiteOpenHelper子類物件
                ////注意,一定要傳入最新的資料庫版本號
                MySQLiteOpenHelper dbHelper1 = new MySQLiteOpenHelper(this,"test_carson",2);
                // 呼叫getWritableDatabase()方法建立或開啟一個可以讀的資料庫
                SQLiteDatabase  sqliteDatabase1 = dbHelper1.getWritableDatabase();

                // 建立ContentValues物件
                ContentValues values1 = new ContentValues();

                // 向該物件中插入鍵值對
                values1.put("id", 1);
                values1.put("name", "carson");

                // 呼叫insert()方法將資料插入到資料庫當中
                sqliteDatabase1.insert("user", null, values1);

                // sqliteDatabase.execSQL("insert into user (id,name) values (1,'carson')");

                //關閉資料庫
                sqliteDatabase1.close();

                break;

            //點選查詢資料庫
            case R.id.query:

                System.out.println("查詢資料");

                // 建立DatabaseHelper物件
                MySQLiteOpenHelper dbHelper4 = new MySQLiteOpenHelper(MainActivity.this,"test_carson",2);

                // 呼叫getWritableDatabase()方法建立或開啟一個可以讀的資料庫
                SQLiteDatabase sqliteDatabase4 = dbHelper4.getReadableDatabase();

                // 呼叫SQLiteDatabase物件的query方法進行查詢
                // 返回一個Cursor物件:由資料庫查詢返回的結果集物件
                Cursor cursor = sqliteDatabase4.query("user", new String[] { "id",
                        "name" }, "id=?", new String[] { "1" }, null, null, null);


                String id = null;
                String name = null;

                //將游標移動到下一行,從而判斷該結果集是否還有下一條資料
                //如果有則返回true,沒有則返回false
                while (cursor.moveToNext()) {
                    id = cursor.getString(cursor.getColumnIndex("id"));
                    name = cursor.getString(cursor.getColumnIndex("name"));
                    //輸出查詢結果
                    System.out.println("查詢到的資料是:"+"id: "+id+"  "+"name: "+name);

                }
                //關閉資料庫
                sqliteDatabase4.close();

                break;


            //點選修改資料
            case R.id.modify:
                System.out.println("修改資料");

                // 建立一個DatabaseHelper物件
                // 將資料庫的版本升級為2
                // 傳入版本號為2,大於舊版本(1),所以會呼叫onUpgrade()升級資料庫
                MySQLiteOpenHelper dbHelper2 = new MySQLiteOpenHelper(MainActivity.this,"test_carson", 2);


                // 呼叫getWritableDatabase()得到一個可寫的SQLiteDatabase物件
                SQLiteDatabase sqliteDatabase2 = dbHelper2.getWritableDatabase();

                // 建立一個ContentValues物件
                ContentValues values2 = new ContentValues();
                values2.put("name", "zhangsan");

                // 呼叫update方法修改資料庫
                sqliteDatabase2.update("user", values2, "id=?", new String[]{"1"});

                //關閉資料庫
                sqliteDatabase2.close();
                break;

            //點選刪除資料
            case R.id.delete:

                System.out.println("刪除資料");

                // 建立DatabaseHelper物件
                MySQLiteOpenHelper dbHelper3 = new MySQLiteOpenHelper(MainActivity.this,"test_carson",2);

                // 呼叫getWritableDatabase()方法建立或開啟一個可以讀的資料庫
                SQLiteDatabase sqliteDatabase3 = dbHelper3.getWritableDatabase();

                //刪除資料
                sqliteDatabase3.delete("user", "id=?", new String[]{"1"});

                //關閉資料庫
                sqliteDatabase3.close();
                break;




            //點選刪除資料庫
            case R.id.delete_database:

                System.out.println("刪除資料庫");

                MySQLiteOpenHelper dbHelper5 = new MySQLiteOpenHelper(MainActivity.this,
                        "test_carson",2);

                // 呼叫getReadableDatabase()方法建立或開啟一個可以讀的資料庫
                SQLiteDatabase sqliteDatabase5 = dbHelper5.getReadableDatabase();

                //刪除名為test.db資料庫
                deleteDatabase("test_carson");
                break;

            default:
                break;

        }
    }
}

步驟3:在主佈局檔案設定按鈕控制資料庫的操作
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="scut.carson_ho.database_demo.MainActivity">



    <Button
        android:id="@+id/instablish"
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="建立資料庫"/>



    <Button
        android:id="@+id/upgrade"
        android:layout_below="@+id/instablish"
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="更新資料庫"/>

    <Button
        android:id="@+id/insert"
        android:layout_below="@+id/upgrade"
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="插入資料"/>

    <Button
        android:id="@+id/modify"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/insert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="修改資料"/>



    <Button
        android:id="@+id/query"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/modify"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查詢資料"/>

    <Button
        android:id="@+id/delete"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/query"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="刪除資料"/>


    <Button
        android:id="@+id/delete_database"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="刪除資料庫"/>



</RelativeLayout>


4.2 測試結果

  • 介面顯示
    介面

  • 按順序點選:建立 - 更新 - 插入 - 查詢 - 修改 - 查詢 - 刪除資料

測試結果

4.3 Demo下載地址

5. 總結

  • 通過閱讀本文,你將全面瞭解Android SQLite資料庫中的所有操作、
  • 接下來會介紹繼續介紹Android開發中的相關知識,有興趣可以繼續關注Carson_Ho的安卓開發筆記

請幫頂/點贊評論!因為你們的贊同/鼓勵是我寫作的最大動力!

不定期分享關於安卓開發的乾貨,追求短、平、快,但卻不缺深度