2010-07-19 3 views
0
sqlite3_stmt *updateStmt = nil; 
    if (updateStmt == nil) 
    { 
     const char *sql = " update PPM set amount = ? "; 
     if (sqlite3_prepare_v2(appDelegate.PPMdatabase, sql, -1,&updateStmt, NULL)!= SQLITE_OK) 
     { 
      NSAssert (0,@"Error while creating update statement. '%s'",sqlite3_errmsg(appDelegate.PPMdatabase)); 
     } 
    } 
    sqlite3_bind_double (updateStmt,1, Val); 
if (SQLITE_DONE != sqlite3_step(updateStmt)) 
    { 
     NSAssert(0,@"Error while updating.'%s'",sqlite3_errmsg(appDelegate.PPMdatabase)); 
    } 
    sqlite3_reset(updateStmt); 

я получаю сообщение об ошибке: ошибка при updating.unkown ошибкаоператор обновления в SQLITE

+0

Можете ли вы переформатировать свой вопрос, чтобы сделать его доступным для чтения? Благодарю. – dwich

+0

эй спасибо Кенни. – user391301

+0

В чем разница между «PPMdatabaseTemp» и «PPMdatabase»? Может быть, вы печатаете код ошибки из другого дескриптора базы данных? Затем, каков точный вывод кода ошибки sqlite3_step? – thatsdisgusting

ответ

2

Вы должны сравнивать sqlite3_step() против SQLITE_OK, а затем, используя расширенные результирующие коды для более точной дискриминации. Даже documentation calls this scheme «тупой».

Причина, по которой вы получаете «Неизвестную ошибку», вероятно, потому, что вы вызываете sqlite3_errmsg, когда не было ошибки (то есть, шаг() был возвращен OK).

+0

вы можете помочь мне, как использовать предложение where в запросе? – user391301

+0

И если я сравню его с SQLITE_OK, программа выйдет из строя. – user391301

+0

Я не вижу предложения WHERE в любом месте, и если изменение постоянного операнда оператора '! =' Приводит к сбою вашей программы, я не могу вообще использовать его. Возможно, вы захотите попробовать метод отладки «плюшевый медведь»: возьмите плюшевого мишку (или кирпич и т. Д.) И объясните ему, что вы пытаетесь сделать. Вам нужна практика, объясняющая ваши проблемы, и кирпич на удивление неплохо помогает в этом. Я не шучу. – msw