我将数据存储在sqlite3数据库中,并且有几个地方可以读取数据和从数据库写入数据。我遇到的问题是,如果SQL语句变得很长,sqlite3_prepare_v2方法会返回错误。
此代码有效:
NSString *strSQL = @"UPDATE commandList SET displayName=?, type=?, formula=?, controlButton=?, sort=? WHERE pk=?;";
const char *sql = [strSQL UTF8String];
if (sqlite3_prepare_v2(database, sql, -1, &dehydrate_statment, NULL) != SQLITE_OK) {
NSLog(@"Error: failed to create update statement with message '%@'.", sqlite3_errmsg(database));
}
但是这段代码出错:
NSString *strSQL = @"UPDATE commandList SET displayName=?, type=?, formula=?, onFormula=?, offFormula=?, controlButton=?, sort=? WHERE pk=?;";
const char *sql = [strSQL UTF8String];
if (sqlite3_prepare_v2(database, sql, -1, &dehydrate_statment, NULL) != SQLITE_OK) {
NSLog(@"Error: failed to create update statement with message '%@'.", sqlite3_errmsg(database));
}
注意唯一的区别是第1行。
答案 0 :(得分:1)
当你说“代码出错”时,你真的应该发布错误。这样可以避免我们进行推测,或者不得不编写样本来重现您所获得的错误。
请参阅:http://www.sqlite.org/limits.html
SQLite确实限制了SQL语句的最大大小。 (这可以防止在嵌入式环境中运行时出现不良行为,但不会影响绑定到语句的值的大小。)
根据上面的代码,你不应该遇到这个大小限制,但很难说你正在遇到什么,因为样本+问题并不孤立。
答案 1 :(得分:0)
iPhone模拟器中不存在此问题,因此必须是其他内容。