ios - SQLite 中 FROM 子句中的绑定(bind)参数

标签 ios sqlite mobile fmdb

是否可以将查询的 FROM 子句中的参数绑定(bind)到 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 "?": syntax error

我知道还有其他方法可以check if a column exists .我特别好奇为什么我不能在 FROM 子句中绑定(bind)参数(只能在上面的 SELECT 子句中绑定(bind)参数,所以它一定是 FROM 子句的问题)。

最佳答案

?应该只用于将实际值绑定(bind)到查询中,例如 VALUESINSERTWHERE 中的值条款。

要动态构建列名和表名,您应该在将查询字符串发送到 FMDB 之前简单地使用字符串格式来构建查询字符串。

- (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];
}

请注意,您不应使用字符串格式来代替 ?以及实际值的正确值绑定(bind)(在这种情况下您没有)。

关于ios - SQLite 中 FROM 子句中的绑定(bind)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23553581/

相关文章:

iphone - NSObject子类中的NSXMLParser切换线程

ios - AVPlayer播放期间出现无法解释的崩溃

c# - 我如何将 'trim' C# 加倍到它将存储在 sqlite 数据库中的值?

android - 如何从另一个类访问列表的长度

iphone - CFBundleURLTypes 不变

ios - 如何为 iOS 编译和运行 vuforia 示例代码

image - 是什么导致Flutter平台之间的图像宽度/覆盖率差异?

mobile - 如何有条件地加载内容(移动优先)

sqlite - ionic Sqlite 不在 chrome 上运行

php - 如何使用 PHP 将 sqlite 转换为 mysql