swift 中从 sqlite 的特定列获取数据时面临的问题
facing issue regarding fetching data from a specific column from sqlite in swift
在开发 iOS 应用程序时。我在从 sqlite 获取数据时遇到问题...
下面是我用来从数据库中获取数据的代码...
func getQazaNmazdata() -> [QazaDB]
{
var dbData = [QazaDB]()
let qstring = "select Counter from Qaza"
var queryStatement: OpaquePointer? = nil
// 1
if sqlite3_prepare_v2(db, qstring, -1, &queryStatement, nil) == SQLITE_OK {
let data = QazaDB()
while sqlite3_step(queryStatement) == SQLITE_ROW
{
let counter = sqlite3_column_int(queryStatement, 0)
data.counter = Int(counter)
dbData.append(data)
} // while loop end
} // if end
var n:Int = 0
for i in dbData
{
print("Value of Counter at Row " + String(n) + " = " + String(i.counter))
n += 1
}
return dbData
}
我从 运行 上面的代码收到的结果是
Value of Counter at Row 0 = 8
Value of Counter at Row 1 = 8
Value of Counter at Row 2 = 8
Value of Counter at Row 3 = 8
Value of Counter at Row 4 = 8
值在行中重复..
the image of a table in database.. I am trying to fetch the value of column Counter
我怀疑 QazaDB 是引用类型 (class),因此它只显示最后分配的值。可能您需要像这样更改 while 循环:
while sqlite3_step(queryStatement) == SQLITE_ROW
{
let data = QazaDB()
let counter = sqlite3_column_int(queryStatement, 0)
data.counter = Int(counter)
dbData.append(data)
} // while loop end
你也可以把QazaDB改成结构体,这样也能解决问题。
在开发 iOS 应用程序时。我在从 sqlite 获取数据时遇到问题... 下面是我用来从数据库中获取数据的代码...
func getQazaNmazdata() -> [QazaDB]
{
var dbData = [QazaDB]()
let qstring = "select Counter from Qaza"
var queryStatement: OpaquePointer? = nil
// 1
if sqlite3_prepare_v2(db, qstring, -1, &queryStatement, nil) == SQLITE_OK {
let data = QazaDB()
while sqlite3_step(queryStatement) == SQLITE_ROW
{
let counter = sqlite3_column_int(queryStatement, 0)
data.counter = Int(counter)
dbData.append(data)
} // while loop end
} // if end
var n:Int = 0
for i in dbData
{
print("Value of Counter at Row " + String(n) + " = " + String(i.counter))
n += 1
}
return dbData
}
我从 运行 上面的代码收到的结果是
Value of Counter at Row 0 = 8
Value of Counter at Row 1 = 8
Value of Counter at Row 2 = 8
Value of Counter at Row 3 = 8
Value of Counter at Row 4 = 8
值在行中重复..
the image of a table in database.. I am trying to fetch the value of column Counter
我怀疑 QazaDB 是引用类型 (class),因此它只显示最后分配的值。可能您需要像这样更改 while 循环:
while sqlite3_step(queryStatement) == SQLITE_ROW
{
let data = QazaDB()
let counter = sqlite3_column_int(queryStatement, 0)
data.counter = Int(counter)
dbData.append(data)
} // while loop end
你也可以把QazaDB改成结构体,这样也能解决问题。