2009-12-11 3 views
0

У меня есть данные, хранящиеся в базе данных sqlite3, и у меня есть несколько мест, которые я читаю и записываю данные в базу данных и из нее. Проблема, с которой я сталкиваюсь, заключается в том, что если SQL-запрос становится очень длинным, метод sqlite3_prepare_v2 возвращает ошибку.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)); 
} 

примечание единственное различие заключается в первой линии.

+4

Какая ошибка возвращается? – xyzzycoder

+0

Проблема - это не слишком длинный запрос, но, вероятно, что-то со значениями onFormula и offFormula. Как и xyzz передо мной, я хочу, чтобы вы опубликовали сообщение об ошибке. –

+0

Вероятно, это ошибка со значениями или нарушением какого-либо ограничения. – cheez

ответ

0

Проблема не существует в симуляторе iPhone, поэтому она должна быть чем-то еще.

1

Когда вы говорите «ошибки в коде», вы действительно должны опубликовать сообщение об ошибке. Это избавляет нас от размышлений или необходимости писать образец для воспроизведения ошибки, которую вы получаете.

См: http://www.sqlite.org/limits.html

SQLite действительно ограничивает максимальный размер оператора SQL. (Это предотвращает нежелательное поведение при запуске во встроенной среде, но не влияет на размер значений, связанных с оператором.)

. Вы должны работать с этим лимитом размера, исходя из кода выше, но это сложно сказать, в чем конкретно вы работаете, потому что вопрос + вопрос не одинок.

Смежные вопросы