代码之家  ›  专栏  ›  技术社区  ›  Nivrutti Pawar

如何在swift4中获取sqlite3中的表总计数?

  •  1
  • Nivrutti Pawar  · 技术社区  · 6 年前

    我是iOS和sqlite3 db的新手。

    我想要在sqlite3 db和swift4中实现的,以获得表的总数。

    我做了以下步骤。

    func getTotalCount()->Int32{
        let queryStatementString = "SELECT COUNT(*) FROM Attendance"
        var stmt: OpaquePointer?
    
        print("select valid count \(queryStatementString) ")
    
        var totalCount: Int32 = 0
        var id: Int = 0
    
        if sqlite3_prepare_v2(db, queryStatementString, -1, &stmt, nil) == SQLITE_OK{
            if sqlite3_step(stmt) == SQLITE_ROW {
                id = Int(sqlite3_column_int(stmt, 0))
                print("id \(id)")
                totalCount = sqlite3_column_count(stmt!)
                print("db: validCount Result:")
                print("validCount \(totalCount)")
    
            }
        }
    
        if sqlite3_step(stmt) != SQLITE_DONE {
            let errmsg = String(cString: sqlite3_errmsg(stmt)!)
            print("db: failure getting punchTime: \(errmsg)")
    
        }
    
        return totalCount
    }
    

    但总是把我作为一个伯爵还给我。 我找不到我失踪的地方。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Nivrutti Pawar    6 年前

    请参阅下面的代码。

    func getTotalCount()->Int32{
        let queryStatementString = "SELECT COUNT(*) FROM Attendance"
        var stmt: OpaquePointer?
        var totalCount: Int32 = 0
    
        if sqlite3_prepare_v2(db, queryStatementString, -1, &stmt, nil) == SQLITE_OK{
            while sqlite3_step(stmt) == SQLITE_ROW {
                totalCount = sqlite3_column_int(stmt, 0)
                print("totalCount \(totalCount)")
            }
        }
    
        if sqlite3_step(stmt) != SQLITE_DONE {
            let errmsg = String(cString: sqlite3_errmsg(stmt)!)
            print("db: failure getting punchTime: \(errmsg)")
        }
        return totalCount
    }