iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

社畜轉行之旅,30天Kotlin學習筆記系列 第 29

Day 29 | SQLite資料庫(四)

查詢資料

  • query()方法

    //查詢資料
    var number = ""
    var book = ""
    var price = ""
    //Step:建立要取得的欄位
    var column = arrayOf("book", "price")
    //Step2:透過query()查詢book為百科全書的紀錄,並儲存至Cursor
    val c = dbrw.query("myTable", column, "book='百科全書'",null,null,null,null)
    //判斷是否有資料
    if(c.count>0){
        //從第一筆開始輸出
        c.moveToFirst()
        //Step3:用迴圈將Cursor內的資料取出
        for(i in 0 until c.count){
            number += "$i\n"
            //取得book欄位的資料
            book += "${c.getString(0)}\n"
            //取得price欄位的資料
            price+= "${c.getString(1)}\n"
            //移至下一筆
            c.moveToNext()
        }
    
    }
    //資料庫取出後關閉Cursor
    c.close()
    

    查詢條件

    欄位名稱="資料內容"
    

    回傳指定欄位

    //如果要指定回傳欄位,需要建立一組陣列,將欄位名稱以字串類型填入
    val column = arrayOf("欄位名稱1", "欄位名稱2", "欄位名稱3")
    

    使用query()方法後,會回傳一個Cursor類別,Cursor如同一章篩選過的資料表,常用的方法:

    • getCount()用於取得總筆數,可以利用它確認是否有資料及取出次數
    • getString(columnIndex: Int)用於取得每個欄位的資料,順序依照查詢時給予的回傳指定欄位坐為排序,例如arrayOf("book", "price"),則getString(0)會得到book欄位的資料;getString(1)則獲得price欄位
    • moveToFirst()將指標移至第一筆,通常查詢完會先呼叫。
    • moveToNext()前往下一筆
  • SQL語法

    val c = dbrw.rawQuery("SELECT * FROM myTable WHERE book LIKE '百科全書'",null)
    

上一篇
Day 28 | SQLite資料庫(三)
下一篇
Day 30 | ContentProvider
系列文
社畜轉行之旅,30天Kotlin學習筆記30

尚未有邦友留言

立即登入留言