【发布时间】:2020-01-26 09:03:57
【问题描述】:
当用户在线或离线时,我正在使用作品创建应用程序,因此我使用sqlite 数据库,所以当我从表中检索数据时,我无法检索数据,这是我用于获取数据的代码
func get_sub_element_offline_data(){
self.subelementOfflineData.removeAll()
let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
.appendingPathComponent("EOBA.sqlite")
if sqlite3_open(fileURL.path, &db) != SQLITE_OK {
print("error opening database")
}
let queryString = "SELECT * FROM Sub_ElementList_NEW1 WHERE element_id = \(elementID)"
var stmt:OpaquePointer?
if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
while(sqlite3_step(stmt) == SQLITE_ROW){ //here while statement not able to execute
let id = sqlite3_column_int(stmt, 0)
let element_id = String(cString: sqlite3_column_text(stmt, 1))
let sub_elements_id = String(cString: sqlite3_column_text(stmt, 2))
let fk_elements_id = String(cString: sqlite3_column_text(stmt, 3))
let title = String(cString: sqlite3_column_text(stmt, 4))
print(id)
print(element_id)
print(sub_elements_id)
print(fk_elements_id)
print(title)
subelementOfflineData.append(SubElementOfflineModel(id: Int(id), sub_elements_id: String(describing: sub_elements_id), title: String(describing: title)))
do {
let jsonData = try JSONEncoder().encode(subelementOfflineData)
let jsonString = String(data: jsonData, encoding: .utf8)!
print(jsonString)
} catch {
print(error)
}
}
}
我正在根据元素列表获取数据我检查元素 id 是否存在于同一个表中,但我仍然无法获取数据
所以请帮忙解决这个问题
【问题讨论】:
-
“不能...”,怎么样?您是否收到错误,您是否尝试过调试等?
-
不,我没有收到任何错误,但是 while 语句没有执行
-
所以查询没有返回任何行,你检查过
elementIDid 是否正确设置(可能打印queryString)? -
是的,我检查了元素 id 是否正确设置,但即使查询成功执行,我仍然无法返回行,但未返回行
-
好吧,如果一切正常并且没有返回任何行,那么数据库表中就没有该 id 的行,我们无法为您提供太多帮助。