Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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
Mysql Swift SQLITE3插入/选择问题_Mysql_Xcode_String_Swift_Sqlite - Fatal编程技术网

Mysql Swift SQLITE3插入/选择问题

Mysql Swift SQLITE3插入/选择问题,mysql,xcode,string,swift,sqlite,Mysql,Xcode,String,Swift,Sqlite,我花了好几天的时间试图弄明白为什么使用Swift的slqlite3要么插入一个缺少最后一个字符的字符串,要么全部为空。在线研究也证明了自己是一场失败;我无法理解,按照以下标准程序: 打开与数据库的连接。 准备语句并绑定变量。 执行语句并完成它。 关闭与数据库的连接。 注:这是根据Apress开始使用Swift book开发iPhone 有没有人知道为什么字符串没有正确插入,或者在选择过程中出现了问题?任何帮助都将不胜感激 我的申请中使用的代码如下: 假设已经创建了必要的变量 var databa

我花了好几天的时间试图弄明白为什么使用Swift的slqlite3要么插入一个缺少最后一个字符的字符串,要么全部为空。在线研究也证明了自己是一场失败;我无法理解,按照以下标准程序:

打开与数据库的连接。 准备语句并绑定变量。 执行语句并完成它。 关闭与数据库的连接。 注:这是根据Apress开始使用Swift book开发iPhone

有没有人知道为什么字符串没有正确插入,或者在选择过程中出现了问题?任何帮助都将不胜感激

我的申请中使用的代码如下:

假设已经创建了必要的变量

var database:COpaquePointer = nil
var result: Int32 = Int32()


    func create () {
    connect()
    let createSQL = "CREATE TABLE IF NOT EXISTS artists (id INTEGER PRIMARY KEY AUTOINCREMENT, title VARCHAR(100) NOT NULL, last_updated INTEGER, created INTEGER);"
    var errMsg:UnsafeMutablePointer<Int8> = nil
    if sqlite3_exec(database, createSQL, nil, nil, &errMsg) != SQLITE_OK { println(errMsg) }
    disconnect()
}

func connect () -> Bool { println("Connected to the db."); return sqlite3_open(path, &database) == SQLITE_OK }

尝试更改“创建表”设置

将VARCHAR100替换为文本。。。不确定这是否能解决问题,但值得一试

func addArtist (title: String) -> Int32 {
    connect()
    var newItemId: Int32 = 0
    let query = "INSERT INTO artists (title, last_updated, created) VALUES (?, ?, ?);"
    var statement:COpaquePointer = nil
    if sqlite3_prepare_v2(database, query, -1, &statement, nil) == SQLITE_OK {
        sqlite3_bind_text(statement, 1, title, -1, nil)
        sqlite3_bind_int(statement, 2, 0)
        sqlite3_bind_int(statement, 3, Int32(NSDate().timeIntervalSince1970))
    }
    if sqlite3_step(statement) == SQLITE_DONE { newItemId = Int32(sqlite3_last_insert_rowid(database)) }
    sqlite3_finalize(statement)
    disconnect()
    return newItemId
}