Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios sqlite3选择“始终返回”;1“;_Ios_Swift_Sqlite - Fatal编程技术网

Ios sqlite3选择“始终返回”;1“;

Ios sqlite3选择“始终返回”;1“;,ios,swift,sqlite,Ios,Swift,Sqlite,我对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 = open

我对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
}
func getallParam()->[选择查询]{
让db=openDatabase()
var dataParam=[SelectQuery]()
var readParam:OpaquePointer?
让getAllParam=“从\(TB参数)中选择\(FD参数ID),\(FD参数组),\(FD参数代码),\(FD参数名称),\(FD参数Parent1),\(FD参数值1),\(FD参数激活)
如果sqlite3_prepare(db,getAllParam,-1,&readParam,nil)!=SQLITE_OK{
打印(“错误准备获取所有参数\(字符串(cString:sqlite3_errmsg(db)))”)
}否则{
变量i=0
while(sqlite3_步骤(readParam)==SQLITE_行){
i=i+1
打印(字符串(i))
打印(字符串(cString:sqlite3_column_text(readParam,0)))
dataParam.append(SelectQuery(id:String(cString:(sqlite3\u column\u text(readParam,0))==nil?UnsafePointer(“”:sqlite3\u column\u text(readParam,0)),
组:String(cString:(sqlite3\u column\u text(readParam,1))==nil?UnsafePointer(“”:sqlite3\u column\u text(readParam,1)),
代码:String(cString:(sqlite3\u column\u text(readParam,2))==nil?UnsafePointer(“”:sqlite3\u column\u text(readParam,2)),
名称:String(cString:(sqlite3\u column\u text(readParam,3))==nil?UnsafePointer(“”:sqlite3\u column\u text(readParam,3)),
parent1:String(cString:(sqlite3\u column\u text(readParam,4))==nil?UnsafePointer(“”:sqlite3\u column\u text(readParam,4)),
值1:String(cString:(sqlite3\u column\u text(readParam,5))==nil?UnsafePointer(“”:sqlite3\u column\u text(readParam,5)),
活动:字符串(cString:(sqlite3\u列\u文本(readParam,6))==nil?UnsafePointer(“”:sqlite3\u列\u文本(readParam,6)))
}
sqlite3_最终确定(readParam)
}
返回数据参数
}
您可以从我的插入代码中看到,我打印了从视图控制器收到的id及其正确返回,并且从插入代码中成功插入

您可以从我的读取/选择代码中看到,我打印列0的值,它是ID,但返回“1”,当我打印数组时,不仅ID,而且所有字段都返回“1”

我从和学习此代码

也许我错过了什么,但有人能帮我吗


谢谢..

这只是一个观察,决不是故意要混淆的
1
可以表示
true
。三元运算符有“真/假”的味道。可能是语法(括号)有问题。IME三元是
(条件)?真值:假值
。IE我总是希望在
之前有一个结束(
可能是真的,但是idk为什么它会这样返回,加上当我插入null时,当我读取数据时它将返回“”(空字符串)。