我剛剛在學習 SQLite.swift 并且正在閱讀有關它的檔案。我正在嘗試查詢我已經擁有但不知道如何執行此操作的現有表。在檔案中,它顯示了如何查詢創建的表(如下所示https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md#selecting-rows)
let users = Table("users")
try db.run(users.create { t in // CREATE TABLE "users" (
t.column(id, primaryKey: true) // "id" INTEGER PRIMARY KEY NOT NULL,
t.column(email, unique: true) // "email" TEXT UNIQUE NOT NULL,
t.column(name) // "name" TEXT
})
// )
for user in try db.prepare(users) {
print("id: \(user[id]), email: \(user[email]), name: \(user[name])")
// id: 1, email: [email protected], name: Optional("Alice")
}
// SELECT * FROM "users"
我有一個可以連接到它的現有表,但我能夠從中獲取資訊的唯一方法是執行 db.scalar 但不確定這是否是正確的方法。
let home = FileManager.default.homeDirectoryForCurrentUser
let dbURL = "Desktop/MyPracticeCode/EpubParser/"
let myPath = home.appendingPathComponent(dbURL)
let db = try Connection("\(myPath)/TestTable.sqlite3")
print(db.scalar("SELECT WtName FROM MyTable"))
這會列印出我需要的資料,但不確定這是否是正確的方法。有沒有辦法將我現有的表分配給“表”型別并像示例中那樣查詢它。我在網上到處搜索,但找不到明確的答案。謝謝
uj5u.com熱心網友回復:
我設法找出了答案。如果有人遇到這個問題或同樣的問題,這就是我設法解決它的方法。仍然不確定這是否是正確的方法。基本上,您需要像示例中一樣使用列重新創建表,但使用列的名稱。創建一個表并將其命名為與資料庫中的表完全相同的名稱。下面是我是如何做到的
let id = Expression<Int64>("id")
let Article = Expression<String?>("Article")
let ArticleName = Expression<String?>("ArticleName")
let ImageThumbnail = Expression<String?>("ImageThumbnail")
let WtCoverImage = Expression<String?>("WtCoverImage")
let myTable = Table("MyTable")
try db.run(myTable.create(ifNotExists: true){ t in
t.column(id,primaryKey: true)
t.column(Article)
t.column(ArticleName)
t.column(ImageThumbnail)
t.column(WtCoverImage)
})
這是我使用的:
try db.run(users.create(ifNotExists: true) { t in /* ... */ })
// CREATE TABLE "users" IF NOT EXISTS -- ...
現在我可以像這樣查詢它
for myData in try db.prepare(myTable){
print("WtCoverImage\(myData[WtCoverImage])")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/352008.html
標籤:迅速 sqlite sqlite.swift
上一篇:沒有關系的房間中的一對多關系
下一篇:為初學者計算sqlite的增長
