iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
0
自我挑戰組

在Android Studio 3.x版開發Android系統的開發記事系列 第 26

在Android Studio 3.x版開發Android系統的開發記事-如何使用SQLite(一)

今天,要來討論Android內建的資料庫SQLite。之前,我們在討論的是透過PHP寫的API,來跟MySQL資料庫,進行新增、刪除、更新、查詢等資料庫的動作。但是,目前也有很多的App,是直接使用內建的資料庫SQLite,來儲存資料。所以,我們就用一個簡單的範例來討論。

首先,先來了解什麼是SQLite,SQLite是一個嵌入式(embedded SQL database)的資料庫,適用SQL語法。如果資料是固定並且量不多,就可以使用類似SQLite這樣的嵌入式資料庫。

SQLite提供SQLiteDatabase類別,其中可以利用rawQuery()和query()兩種資料表查詢方法,也可以分別利用 insert()、update()、delete()等方法來處理新增、修改和刪除資料。

我們先直接建立一個範例,請在Android Studio 3.x版,新建一個專案。增加一個Empty Activity。再拉一個ListView元件,順序來排列出來。如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20181101/20000953gyMUe2TSC1.jpg

https://ithelp.ithome.com.tw/upload/images/20181101/20000953H03pPRIkPX.jpg
完整的程式碼,如下:

public class MainActivity extends AppCompatActivity {

    //宣告物件
    private SQLiteDatabase db = null;
    ListView lsvdb;

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

        lsvdb = (ListView)findViewById(R.id.lsvdb);

        //建立SQLite 資料庫的實體檔案
        db = openOrCreateDatabase("cust.db", Context.MODE_PRIVATE,null);

        //建立資料表的SQL語法
        String strcreatedb = "CREATE TABLE IF NOT EXISTS " +
                "tcustomer (_id INTEGER PRIMARY KEY, cname TEXT, ctel TEXT) ";

        //執行SQL語法,建立資料表
        db.execSQL(strcreatedb);

        //新增五筆資料。
        String strinsertsql = "INSERT INTO tcustomer (cname,ctel) values " +
                "('king','0953123456')";

        db.execSQL(strinsertsql);

        strinsertsql = "INSERT INTO tcustomer (cname,ctel) values " +
                "('Joe','0953789f123')";

        db.execSQL(strinsertsql);

        strinsertsql = "INSERT INTO tcustomer (cname,ctel) values " +
                "('Mary','0953333444')";

        db.execSQL(strinsertsql);

        strinsertsql = "INSERT INTO tcustomer (cname,ctel) values " +
                "('John','0953555777')";

        db.execSQL(strinsertsql);

        strinsertsql = "INSERT INTO tcustomer (cname,ctel) values " +
                "('Bill','0953888111')";

        db.execSQL(strinsertsql);

        //查詢資料
        Cursor cursor = db.rawQuery("SELECT * FROM tcustomer",null);

        //如果查詢有資料的話,就跟ListView做連結
        if (cursor != null && cursor.getCount() >=0)
        {
            SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                    android.R.layout.simple_list_item_2,
                    cursor,
                    new String[] {"_id","cname"},
                    new int[] {android.R.id.text1,android.R.id.text2},
                    0);

            lsvdb.setAdapter(adapter);
        }
    }
}

執行出來的輸入畫面,如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20181101/20000953exxn4VwrmN.jpg


上一篇
在Android Studio 3.x版開發Android系統的開發記事-如何實做書籍管理系統(七)
下一篇
在Android Studio 3.x版開發Android系統的開發記事-如何使用SQLite(二)
系列文
在Android Studio 3.x版開發Android系統的開發記事30

尚未有邦友留言

立即登入留言