【发布时间】:2011-09-15 16:49:25
【问题描述】:
有什么方法可以使用列名而不是 int 作为列号:(char*)sqlite3_column_text(statement, 1)
这就是我现在所做的:
sqlite3 *db = [MyAppDelegate getNewDBConnection];
sqlite3_stmt *statement = nil;
const char *sql = "select * from foo f join bar b on b.id = f.id;";
if(sqlite3_prepare_v2(db, sql, -1, &statement, NULL) != SQLITE_OK)
NSAssert1(0,@"Error preparing statement %s", sqlite3_errmsg(db));
else
{
while(sqlite3_step(statement) == SQLITE_ROW) {
[lorem addObject:[NSString stringWithFormat:@"%s",(char*)sqlite3_column_text(statement, 1)]];
[ipsum addObject:[NSString stringWithFormat:@"%s",(char*)sqlite3_column_text(statement, 7)]];
}
sqlite3_finalize(statement);
}
但理想情况下我会这样做(char*)sqlite3_column_text(statement, SomeColumn)
【问题讨论】:
-
如果您在
select语句中明确列出列(而不是执行select *),则不必担心顺序或列号会发生变化。
标签: iphone objective-c ios sqlite