sqlite3 выберите всегда возвращать "1" - PullRequest
0 голосов
/ 12 декабря 2018

Я действительно новичок в разработке для iOS.Я использую Xcode 10.1

Я пытаюсь вставить, а затем выбрать все строки из базы данных SQLite3, но всегда возвращает «1» для каждого поля, которое я вызываю.

Это мой код для вставки:

func insertParameter(id : String, group : String, code : String, name : String, parent1 : String, value1 : String, active : String, count : String){
    let db = openDatabase()
    var insertParamDB : OpaquePointer?

    print(id)

    let insertConfig = "Insert or replace into \(TB_Parameter) values (?,?,?,?,?,?,?)"

    if sqlite3_prepare(db, insertConfig, -1, &insertParamDB, nil) != SQLITE_OK{
        print("Error prepare insert param \(String(cString: sqlite3_errmsg(db)))")
        return
    }else{
        if sqlite3_bind_text(insertParamDB, 1, id, -1, nil) != SQLITE_OK{
            print("Error Bind param1 \(String(cString: sqlite3_errmsg(db)))")
            return
        }

        if sqlite3_bind_text(insertParamDB, 2,group, -1, nil) != SQLITE_OK{
            print("Error Bind param2 \(String(cString: sqlite3_errmsg(db)))")
            return
        }

        if sqlite3_bind_text(insertParamDB, 3, code, -1, nil) != SQLITE_OK{
            print("Error Bind param3 \(String(cString: sqlite3_errmsg(db)))")
            return
        }

        if sqlite3_bind_text(insertParamDB, 4, name, -1, nil) != SQLITE_OK{
            print("Error Bind param4 \(String(cString: sqlite3_errmsg(db)))")
            return
        }

        if sqlite3_bind_text(insertParamDB, 5, parent1, -1, nil) != SQLITE_OK{
            print("Error Bind param5 \(String(cString: sqlite3_errmsg(db)))")
            return
        }

        if sqlite3_bind_text(insertParamDB, 6, value1, -1, nil) != SQLITE_OK{
            print("Error Bind param6 \(String(cString: sqlite3_errmsg(db)))")
            return
        }

        if sqlite3_bind_text(insertParamDB, 7, active, -1, nil) != SQLITE_OK{
            print("Error Bind param7 \(String(cString: sqlite3_errmsg(db)))")
            return
        }

        if sqlite3_step(insertParamDB) != SQLITE_DONE{
            print("Error Insert param \(String(cString: sqlite3_errmsg(db)))")
            return
        }

        print(count)
        print("Success Insert Param")
        sqlite3_finalize(insertParamDB)
    }
}

и это мой код для чтения

func getallParam()->[SelectQuery]{
    let db = openDatabase()

    var dataParam = [SelectQuery]()
    var readParam : OpaquePointer?
    let getAllParam = "Select \(FD_Param_ID),\(FD_Param_Group),\(FD_Param_Code),\(FD_Param_Name),\(FD_Param_Parent1),\(FD_Param_Value1),\(FD_Param_Active) FROM \(TB_Parameter)"

    if sqlite3_prepare(db, getAllParam, -1, &readParam, nil) != SQLITE_OK {
        print ("Error Prepare get all param \(String(cString: sqlite3_errmsg(db)))")
    }else{

        var i = 0
        while(sqlite3_step(readParam) == SQLITE_ROW) {
            i = i+1
            print(String(i))
            print(String(cString:sqlite3_column_text(readParam, 0)))

            dataParam.append(SelectQuery(id: String(cString:(sqlite3_column_text(readParam, 0)) == nil ? UnsafePointer<UInt8> ("") : sqlite3_column_text(readParam, 0)),
                                         group: String(cString:(sqlite3_column_text(readParam, 1)) == nil ? UnsafePointer<UInt8> ("") : sqlite3_column_text(readParam, 1)),
                                         code: String(cString:(sqlite3_column_text(readParam, 2)) == nil ? UnsafePointer<UInt8> ("") : sqlite3_column_text(readParam, 2)),
                                         name: String(cString:(sqlite3_column_text(readParam, 3)) == nil ? UnsafePointer<UInt8> ("") : sqlite3_column_text(readParam, 3)),
                                         parent1: String(cString:(sqlite3_column_text(readParam, 4)) == nil ? UnsafePointer<UInt8> ("") : sqlite3_column_text(readParam, 4)),
                                         value1: String(cString:(sqlite3_column_text(readParam, 5)) == nil ? UnsafePointer<UInt8> ("") : sqlite3_column_text(readParam, 5)),
                                         active: String(cString:(sqlite3_column_text(readParam, 6)) == nil ? UnsafePointer<UInt8> ("") : sqlite3_column_text(readParam, 6))))
        }

        sqlite3_finalize(readParam)
    }
    return dataParam
}

, который вы можете видеть из моего кода вставки. Я печатаю идентификатор, который я получаю от моего контроллера представления, и его возвращение корректно, и я добился успехавставить из моего кода вставки.

, и вы можете видеть из моего кода чтения / выбора, я печатаю значение столбца 0, который является идентификатором, но возвращает «1», и когда я печатаю свой массив не только идентификатор, новсе поля возвращаются "1"

Я изучаю этот код из Учебник по sqlite по ray и Упрощенный IOS .

возможно я что-то пропустил, но могукто-нибудь, помогите мне.

Спасибо ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...