2009-11-11 3 views
3

내 iPhone 응용 프로그램에서 Sqlite3을 사용하고 있습니다. 임의로 몇 가지 원하지 않는 롤백이 발생했습니다. 그러나 이것이 내가 sqlite3_finalize으로 진술을 마무리하지 않았다는 사실과 관련이 있는지는 알 수 없습니다. 내가 알기로는 sqlite3_exec이 처리합니다.sqlite3_exec로 쿼리를 수행 한 후에 sqlite3_finalize를 사용해야합니까?

또한 sqlite3_prepare_v2으로 일부 SELECT를 찾았으므로이 항목을 마무리해야한다는 것을 알고 있으므로 sqlite3_exec과 동일한 작업을 수행해야합니까? 내 문

한 예는 다음과 같습니다

NSString *[email protected]"UPDATE books SET title='newName' WHERE id='21';"; 
if ((result=sqlite3_open([database UTF8String], &_database))==SQLITE_OK) { 
    result=sqlite3_exec(_database, [query UTF8String],NULL,NULL,&errorMsg); 
    if (result!=SQLITE_OK) { 
     printf("\n%s",errorMsg); 
     sqlite3_free(errorMsg); 
    } 
    sqlite3_close(_database); 
} 

할까요 I sqlite3_finalize(result) 데이터베이스를 닫기 전에? sqlite3_finalize() 기능이 sqlite3_prepare_v2() 또는 관련 기능을 사용하여 만든 준비된 문을 삭제 호출되기 때문에 당신은 필요가 없습니다

답변

1

sqlite3_exec로 작업 할 때 sqlite3_finalize()를 호출 할 필요가 없습니다.

  1. sqlite3_prepare_v2()
  2. sqlite3_step()
  3. sqlite3_finalize()

당신은 또한 작은 SQLite는 튜토리얼에서 이것에 대해 읽을 수 있습니다 sqlite3_exec 3 개 기능에 대한 바로 가기이기 때문에 이다 at : http://www.iosdevelopment.be/sqlite-tutorial/

관련 문제