android - 从表中选择 2 列,在一个查询

标签 android ios objective-c sqlite

在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。

最佳答案

  1. 你错过了 ORDER BY <column_name>从 SQL。在 Android 中,查询构建器添加了 ORDER BY对您而言,但使用原始 SQL,您必须自己完成。

  2. sqlite3_prepare_v2()编译 SQL 但不运行它。使用 sqlite3_step()运行编译的查询。这与游标相同moveTo...()在 Android 中。

关于android - 从表中选择 2 列,在一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21133039/

相关文章:

objective-c - 围绕任意点旋转的 CGContext 绘图

android - MapBox 能够检测坐标是否在水体上?

iphone - InAppPurchase 无效的产品标识符 - 可能的原因

c# - 如何将 UINaivgationBar 添加到属于 TabBarController 的 View

iphone - 每次通话结束后在 iOS 中调用应用程序

ios - 以编程方式设置在 View Controller 上添加的对象的标签

android - 如何在 android MVP 中应用组合?

java - 返回到 fragment 的按钮

android - 单击后退按钮两次以使用 rxjava 退出 Activity

ios - Swift 中的时间变量