“`markdown

前言

在這篇文章中,我們將學習如何在 Swift 中使用 SQLite 進行數據查詢和加總,特別針對數組中的重複欄位進行數量加總的實作。與上次使用 MySQL 的經驗相比,SQLite 語法有其獨特之處,但也同樣強大。讓我們一起看看如何有效地運用這些語法來完成複雜的查詢。

SQLite.swift 語法

使用 SQLite.swift 進行查詢是相對簡單的。以下是基本查詢的示範:

“`swift
let users = Table(“users”)
let email = Expression(“email”)
let name = Expression(“name”)

do {
for user in try db.prepare(users) {
print(user)
}
} catch {
print(“查詢失敗: \(error)”)
}
“`

如果你想進行更複雜的查詢,可以使用鏈式調用的方式來組合查詢條件:

“`swift
let query = users.select(email) // SELECT “email” FROM “users”
.filter(name != nil) // WHERE “name” IS NOT NULL
.order(email.desc, name) // ORDER BY “email” DESC, “name”
.limit(5, offset: 1) // LIMIT 5 OFFSET 1
“`

雖然這樣的寫法很方便,但對於熟悉 SQL 語法的開發者來說,還是可能會感到不習慣。幸好,SQLite.swift 支援原生 SQL 語法,讓我們可以更靈活地操作數據。

使用 SQL 語法進行查詢

在這部分,我們將使用 SQL 語法來查詢相同產品的價格並進行加總。首先,我們需要撰寫一個基本的 SELECT 語句。

基本 SELECT 使用示範

以下是使用 SQL 語法查詢產品及其價格的例子:

示範查詢產品及價格的結構

“`swift
for user in try db.prepare(“SELECT DISTINCT product, price FROM stock”) {
print(user)
}
“`

這段程式碼將返回每個產品的名稱及其價格,例如:

“`swift
[大海螺, 900] [大海螺, 99] [歐拉, 250] [美好, 250] “`

然而,若某個產品有多個價格,我們需要將其加總。可以使用 `SUM` 函數和 `GROUP BY` 子句來實現:

“`swift
for user in try db.prepare(“SELECT product, SUM(price) AS total_price FROM stock GROUP BY product”) {
print(user)
}
“`

這樣可以得到每個產品的總價格,得到的結果如下:

“`swift
[大海螺, 999] [歐拉, 250] [美好, 250] “`

這樣的操作不僅簡化了查詢過程,同時也能讓我們更方便地進行數據分析。

錯誤排除

在使用 SQLite 進行查詢時,常見的錯誤有:
– **語法錯誤**:請檢查 SQL 語法是否正確,特別是引號、括號等符號。
– **資料庫未連接**:確保資料庫已正確初始化和連接。
– **表名或列名錯誤**:請確認你所使用的表名和列名與資料庫中的一致。

延伸應用

了解 SQLite 的基本查詢後,你可以進一步學習如何結合 SwiftUI 或 UIKit 來顯示查詢結果,並建立更複雜的數據驅動應用程序。


教學圖片

常見問題解答 (Q&A)

**Q1: SQLite 與 MySQL 有什麼主要區別?**
A1: SQLite 是一個輕量級的資料庫,適合於單個應用程序使用,而 MySQL 是一個伺服器端的資料庫,適合於多用戶和大型應用。

**Q2: 如何處理 SQLite 的錯誤?**
A2: 在進行查詢或操作時,應使用 `do-catch` 結構來捕捉錯誤,並進行相應的處理。

**Q3: 可以在 Swift 中使用其他資料庫嗎?**
A3: 是的,Swift 支援多種資料庫,如 PostgreSQL、Firebase 等,但使用方式和配置會有所不同。
“`

Categorized in: