iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
Mobile Development

Flutter基礎入門系列 第 13

【Day 13】 SQlite: 快速輕便的資料庫

  • 分享至 

  • xImage
  •  

在資料儲存時,最最最最簡單的方法就是存成一個文字檔,但這僅僅是存下文字,無法將資料分類、加入子項目,後續在做讀取資料時也不易處理。這個時候,我們便需要用到資料庫。現在常用的資料庫有PostgreSQL, MonggoDB, MySQL, Oracle......多到說也說不完,今天,筆者將介紹SQLite,一個適合與Flutter並用的資料庫。

什麼是SQLite?

SQLite官方網站的介紹中,它是一個輕巧、快速、獨立、具高依賴性、功能完整的SQL資料庫引擎。

SQL? Sequel? Squeal?

先來個100秒簡單介紹吧
Yes

SQL, Structured Query Language結構式查詢語言是一個程式語言,專門用於儲存和處理關聯性資料庫(relational database),並將資料以表格的方式儲存,行與列表示資料的屬性與和其他資料的相關性。另外,SQL也可以用於維護和優化資料庫的效能。

有一個關於SQL許多人都會討論的一個點,就是「如何唸SQL」?有的人唸Ess-Que-El,有的唸Sequel,有的唸Squirrel或squeal???筆者覺得這挺有趣的,它不像python,java這種一看就知道怎麼唸,所以有各種不同神奇的唸法。
reddit - How do you pronounce SQL?
Yes

好了!打岔就到這裡結束,接下來回到SQLite。

下載SQLite

在使用之前,我們當然需要先將sqlite下載到我們的電腦上。可以選擇到官方下載頁面,或者是使用package manager下載。

筆者的系統是Linux Mint,是Ubuntu底下的一枝,因此下載檔案時輸入以下便能安裝好,MacOS可使用brew,Windows可使用winget:

sudo apt install sqlite

下載並安裝完成後在我們的terminal輸入sqlite3,便能夠建立一個新的SQLite資料庫檔案。
https://ithelp.ithome.com.tw/upload/images/20240927/20169446CLdxzo5X4h.png

常用指令

在sqlite中,所有「非編輯資料庫內容」的指令皆由.為開頭,輸入.help可以看到一大串的指令一覽。以下為幾個最常用的指令:

command usage
.read FILE 讀取FILE
.output ?FILE? 輸出至FILE,無指定FILE,則為stdout
.open ?OPTIONS? ?FILE? 關閉現在的檔案並開啟FILE
.dbinfo ?DB? 顯示資料庫的資料
.tables ?TABLE? 列出與TABLE相似pattern的表格的名稱
.schema 列出表格的資料
.recover 盡可能復原受損的資料庫
.headers on/off 顯示/隱藏表格的抬頭
.exit / .quit 退出sqlite

SQLite + Flutter = sqflite

flutter有個官方建立、專門用於SQLite資料庫處理的package:sqflite,我們只需要在pubspec.yaml的dependencies中加入sqflite,我們的程式便可以是用他的函式庫了。

dependencies:
  sqflite: ^2.3.3

因為有了sqflite的函式庫,我們可以暫時不用太深入SQL的語法,只要知道那些函式如何使用就可以了。

要記得在使用的檔案import sqflite才可以用其內容物喔!

import 'package:sqflite/sqflite.dart';

以下筆者將整理幾個sqflite常用的函式,詳細說明可點選此連結

method usage
getDatabasesPath() 設定資料庫所在的路徑,與join()並用
openDatabase() 開啟資料庫
db.execute("") 將引號內的內容以SQL的程式碼執行
db.insert() 加入新資料
db.query() 將資料庫以List<Map>的形式回傳
db.update() 更新資料庫內已有的資料
db.delete() 刪除資料庫內已有的資料

備註:final db = await database;


謝謝看到這裡的你,明天將會把這篇學到的內容實做到Schedrag專案中。
有任何問題或是想法都歡迎留言或email,我們下篇見~
email: nnyjan02426@gmail.com
Schedrag: nnyjan02426/Schedrag


上一篇
【Day 12】太多import? 用export試試!
下一篇
【Day 14】資料庫與Flutter的結合 - sqflite的實作
系列文
Flutter基礎入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言