在android中我写了这段代码:
public Trap getCloseTrap()
{
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
Cursor cur = db.query(TRAP_TABLE, null, null, null, null, null, DISTANCE_TO_CLOSE_POINT+" ASC LIMIT 1");
Trap closeTrap = readFromCursor(cur);
cur.close();
return closeTrap;
}
在 objective-c 中,我尝试以这种方式做类似的事情:
- (Traps*)getCloseTrap
{
Traps *aTrap = [[Traps alloc] init];
// SELECT * FROM traps_table ORDER BY dist_to_close_point ASC LIMIT 1
NSString *sqlStatment = [NSString stringWithFormat:@"SELECT * FROM %@ ORDER BY %@ ASC LIMIT 1", TRAP_TABLE, DISTANCE_TO_CLOSE_POINT];
FMResultSet *query = [db executeQuery:sqlStatment];
while ([query next]) {
int trapID = [query intForColumn:ID];
aTrap = [self getTrap_trapID:trapID];
}
return aTrap;
}
我还没有测试它,但我知道我的 objective-c 代码有问题。
编辑:
修复了我的代码并现在使用 FMDB。
最佳答案
你错过了
ORDER BY <column_name>
从 SQL。在 Android 中,查询构建器添加了ORDER BY
对您而言,但使用原始 SQL,您必须自己完成。sqlite3_prepare_v2()
编译 SQL 但不运行它。使用sqlite3_step()
运行编译的查询。这与游标相同moveTo...()
在 Android 中。
关于android - 从表中选择 2 列,在一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21133039/