0
//==================================================================
- (BOOL) addNewSimpleTemplates:(NSString*)dbPath:(NSString*)title{
//==================================================================
BOOL returnVal = NO;
NSString *maxValuePosition;
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
{
NSString *selectSQL = [NSString stringWithFormat:@"select MAX(pr.position) FROM phrase_reference pr inner join storyboard_main_categories smc on smc.id = pr.main_category_id where smc.category_name = %@", @"'Simple Templates'"];
const char *sql = [selectSQL UTF8String];
sqlite3_stmt *selectStmt;
if(sqlite3_prepare_v2(database, sql, -1, &selectStmt, NULL) == SQLITE_OK){
while(sqlite3_step(selectStmt) == SQLITE_ROW)
{
///
// how to use finalise when using sqlite3_prepare_v2
char *localityChars = (char*)sqlite3_column_text(selectStmt, 0);
if (localityChars == NULL)
maxValuePosition = nil;
else
maxValuePosition = [NSString stringWithUTF8String: localityChars];
// increment the postion value
int postion = [maxValuePosition intValue] + 1;
//saving a new simple phrase is started here
sql = "insert into storyboard_phrases(phrase) Values(?)";
selectStmt = nil;
if(sqlite3_prepare_v2(database, sql, -1, &selectStmt, NULL) ==
SQLITE_OK){
sqlite3_bind_text(selectStmt, 1, [title UTF8String], -1,
SQLITE_TRANSIENT);
}
if(sqlite3_step(selectStmt) != SQLITE_DONE) {
NSLog(@"Error: %s just here itself", sqlite3_errmsg(database));
} else {
NSLog(@"Insert into row id = %d",
sqlite3_last_insert_rowid(database));
}
///
}
}
sqlite3_finalize(selectStmt);
}
sqlite3_close(database);
}
私はどのように使用するか知りたいと思います。何回sqlite3_prepare_v2を複数回使用するとsqlite 3 finalize文を置くことができますか?私はsqlite3 finalizeステートメントを2回使用する必要がありますか?
私の上記の方法では、私はsqlie3を使用してv2の文を2回準備するので、sqlite3を使用する必要がありますか?
のplsは私はあなたがnil
に設定する前に、あなたは間違いなくselectStmt
にsqlite3_finalize
を呼び出す必要が