是否可以将查询的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子句的问题)。
答案 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];
}
和正确的值绑定实际值(在这种情况下您不具备这些值)。