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改成结构体,这样也能解决问题。