iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 30
0
自我挑戰組

向Android APP開發說Hello系列 第 30

Day 30. Android資料儲存-SQLite (part 2)與總結

Day 29中,我們安裝了SQLite,並練習建置資料庫、建立資料表(一個空的資料表叫tenniscourts),以及查詢table的欄位資訊。接下來一起試試SQLite上的CRUD吧。

C: CREATE

試著INSERT一筆資料進去DB。

  • INSERT INTO tenniscourts (_id, court_name, city, surface) VALUES (1, "Jenhai Tennis court", "Kaohsiung", "Clay");

再補上兩筆:

  • INSERT INTO tenniscourts (_id, court_name, city, surface) VALUES (1, "Minquan Tennis court", "Taipei", "Hard");
  • INSERT INTO tenniscourts (_id, court_name, city, surface) VALUES (1, "NCTU Tennis court", "Hsinchu", "Hard");

使用SELECT * FROM tenniscourts;查詢表格資料並得到結果:
https://ithelp.ithome.com.tw/upload/images/20181114/20107569Wd2qbYyEjQ.jpg

如果不喜歡預設的分隔符號|,可以輸入.mode tabs將輸出結果的分隔符號改成tab:
https://ithelp.ithome.com.tw/upload/images/20181114/20107569fArxm5WK1Z.jpg

現在表格內容應該如下:

_id court_name city surface
1 Jenhai Tennis court Kaohsiung Clay
2 Minquan Tennis court Taipei Hard
3 NCTU Tennis court Hsinchu Hard

設置table constraints

由於現有table少了一些條件約束,在新增紀錄的時候可能會產生意想不到的結果(例如忘了輸入名稱),以下是依些常用的條件約束關鍵字:

  • PRIMARY KEY:確保table有唯一的主鍵。
  • AUTO INCREMENT:自動產生流水ID
  • NOT NULL:限制欄位內不能為空(NULL)。
  • DEFAULT :給定預設值。
    把表格刪除(DROP TABLE tenniscourts;),再使用條件約束建立一次:
    CREATE TABLE tenniscourts(_id INTEGER PRIMARY KEY AUTOINCREMENT, court_name TEXT NOT NULL, city TEXT NOT NULL, surface NOT NULL DEFAULT 'Hard');
    建立完成後,再逐一插入每筆資料(這次就不用再手動輸入id了):INSERT INTO tenniscourts (court_name, city, surface) VALUES ("Jenhai Tennis court", "Kaohsiung", "Clay");

https://ithelp.ithome.com.tw/upload/images/20181114/20107569UWknRNrdr7.jpg

R: READ

使用WHERE來得到特定網球場資料,即根據ID來讀取單筆資料,例如搜尋id=2、或場地類型(Surface)為硬地(Hard)、或城市(city)為高雄(Kaohsiung)的網球場:
https://ithelp.ithome.com.tw/upload/images/20181114/20107569taXP7hZVpT.jpg

U: UPDATE

試著根據ID來UPDATE資料,假設我們想要將_id為1的球場的城市由"Kaohsiung"改為"Kaohsiung City",則語法為
UPDATE tenniscourts SET city = "Kaohsiung City" WHERE _id==1;
https://ithelp.ithome.com.tw/upload/images/20181114/20107569JVgbAUSFmO.jpg

D: DELETE

最後是DELETE,使用DELETE關鍵字來刪除特定網球場資料:
DELETE FROM tenniscourts WHERE city = "Kaohsiung City";
https://ithelp.ithome.com.tw/upload/images/20181114/20107569tTfuICrE6o.jpg


30天的簡要回顧

  • 我們在Day1~Day6說明了基礎的Android Studio安裝以及Layout的配置
    • 主要為XML的部分
    • 認識TextView、ImageView、ViewGroups (LinearLayout、RelativeLayout與NestedLayout)。
  • 在Day7~Day16開始加入互動功能(Java的部分)
    • 認識Button、CheckBox、ScrollView與EditText。
    • 做了一個便當訂購介面,包含Intent(App資訊傳遞)。
    • 練習為App設定多語言文件以及主題(Theme)。
  • 在Day18~Day28進階的class建立與使用
    • 再次使用Intent(顯式與隱式),並認識Event Listener。
    • 認識View Recycling及使用ArrayAdapter。
    • 學習自訂Layout加入圖片。
  • 在Day29~Day30著重在資料庫SQLite
    • 安裝與建立SQLite。
    • 使用SQL進行各類操作。

雖然對於Android的認識還有很長的路要走,
但這只是個開端,很慶幸自己選了一個沒接觸過的主題,過了充實的30天,
也謝謝所有訂閱、觀看我文章的邦友。


上一篇
Day 29. Android資料儲存-SQLite (part 1)
系列文
向Android APP開發說Hello30

尚未有邦友留言

立即登入留言