上一篇我是用原生SQL語法
但回傳的Value格式真的太怪
我裡面明明是Date類型
回傳給我竟然是String
轉Date會報錯
今天就來翻譯回來
SQLite.swift的語法
主要是要把相同產品的價格加總
func reloadData(tableName:String) {
productList = [ProductItemtMode]()
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let db = try? Connection("\(path)/Chuhuo.sqlite")
for user in (try? db?.prepare("SELECT product , price,SUM(price) FROM stock GROUP BY product"))!! {
}
}
先演示全部程式法如下
func reloadData(tableName:String) {
productList = [ProductItemtMode]()
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let db = try? Connection("\(path)/Chuhuo.sqlite")
let query = users.select(price.sum,product)
.group(product)
for user in (try? db?.prepare(query))!! {
print(user[product])
print(user[price.sum]!)
}
}
就有的SQL如下
SELECT product , price,SUM(price) FROM stock GROUP BY product
翻譯成SQLite如下
let query = users.select(price.sum,product)
.group(product)
目前SQL資料以及架構
得出結果就是
[大海螺, 990]
[歐拉, 250]
[美好, 250]
感想就是基本上東西都有
雖然技術文件上有些沒寫
但所有東西都是在變數後面加"." + SQL語法
就有類似的
比如加總 SUM(price) 翻譯就是 price.sum
也是蠻直覺的
加入了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
老實說就是原生語法返回value太奇怪
不然我也是蠻習慣使用原生SQL語法
回傳都是 Binding格式
這到底是什麼
而且我日期欄位格式是 Date
存入也是Date類型
怎麼回傳的時候只能是String
也太奇怪 這可能要花很多時間去找
中文網站太少分享了