0

我无法让这段代码通过 iOS 将数据实际插入我的 SQLite 数据库:

            NSString* inssql = [NSString stringWithFormat:@"INSERT OR IGNORE INTO roomData VALUES ('%@', '%i', '%@', '%@', '%@', '%@'); UPDATE roomData SET roomNumber='%@', roomName='%@', roomDesc='%@', roomHash='%@' WHERE roomID = '%@'", [row objectAtIndex:0],property,[row objectAtIndex:1],[row objectAtIndex:2],[row objectAtIndex:3],[row objectAtIndex:4],[row objectAtIndex:1],[row objectAtIndex:2],[row objectAtIndex:3],[row objectAtIndex:4],[row objectAtIndex:0]];
        sql = [inssql UTF8String];

        if (sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK) {
            NSLog(@"MESSAGE: Could not prepare this insert, %s", sqlite3_errmsg(db));
        } else {
            if (sqlite3_step(sqlStatement) == SQLITE_DONE)
            {
                NSLog(@"MESSAGE: Successful insert, %@, %d", [row objectAtIndex:0], sqlite3_step(sqlStatement));
            } else {
                NSLog(@"MESSAGE: Failed insert, %s", sqlite3_errmsg(db));
            }
        }

我得到“成功插入”,但数据库中没有数据。知道怎么了?这是我第一次使用 SQLite。

编辑#1:

我还尝试了以下语法:

            sql = "INSERT INTO roomData VALUES (?)";
        sqlite3_prepare(db, sql, -1, &sqlStatement, NULL);
        sqlite3_bind_int(sqlStatement, 1, 2);
        if(sqlite3_step(sqlStatement)) { NSLog(@"DONE!"); } else { NSLog(@"FAIL: %s",sqlite3_errmsg(db)); }

我得到“完成!”,但数据库仍然是空的。

编辑#2:

我最初试图修改数据库,因为它存储在应用程序包中。一个错误,对吧?所以我安装了一个脚本,将数据库复制到库目录并使用该副本。但脚本仍然不会将记录插入数据库。我在这里想念什么?

4

1 回答 1

0

我设法解决了这个问题。最初的问题肯定是数据库文件必须在 Library 文件夹中。解决这个问题后,它只是因为我的 sql 语句没有正确插入正确数量的字段而无法正常工作。在更正我的陈述后,这个过程非常顺利。不知道为什么它没有产生错误。

于 2013-01-04T19:13:41.973 回答