在SQLite中绑定FROM子句中的参数

时间:2014-05-08 22:21:43

标签: ios sqlite mobile fmdb

是否可以将查询的FROM子句中的参数绑定到SQLite?怎么样?

如果没有,为什么?任何替代方案?

以下是我想在iOS应用程序中执行的操作:

- (BOOL)existsColumn:(NSString *)column inTable:(NSString *)table ofDatabase:(FMDatabase *)database {
    NSString *query = @"SELECT ? FROM ? LIMIT 0";
    NSArray *queryParameters = @[column, table];
    return (BOOL)[database executeQuery:query withArgumentsInArray:queryParameters];
}

以下是我收到的错误消息:

  

near"?":语法错误

我了解check if a column exists还有其他方式。我特别好奇为什么我不能在FROM子句中绑定一个参数(只绑定上面SELECT子句中的参数,所以它必须是FROM子句的问题)。

1 个答案:

答案 0 :(得分:1)

?只应用于将实际值绑定到查询中,例如VALUES的{​​{1}}部分或INSERT子句中的值。

要动态构建列名和表名,只需使用字符串格式构建查询字符串,然后再将其发送到FMDB。

WHERE

请注意,您不应该使用字符串格式代替使用- (BOOL)existsColumn:(NSString *)column inTable:(NSString *)table ofDatabase:(FMDatabase *)database { NSString *query = [NSString stringWithFormat:@"SELECT %@ FROM %@ LIMIT 0", column, table]; return (BOOL)[database executeQuery:query]; } 和正确的值绑定实际值(在这种情况下您不具备这些值)。