我想做的就是发送一个查询
SELECT * FROM table WHERE col IN (110, 130, 90);
所以我准备了以下声明
SELECT * FROM table WHERE col IN (:LST);
然后我用
sqlite_bind_text(stmt, 1, "110, 130, 90", -1, SQLITE_STATIC);
不幸的是,这变成
SELECT * FROM table WHERE col IN ('110, 130, 90');
并且没用(请注意另外两个单引号).我已经尝试在字符串中添加额外的'但它们会被转义.我没有找到关闭转义或防止文本被单引号括起来的选项.我能想到的最后一件事是没有使用准备好的声明,但我只把它作为最后一个选项.你有什么想法或建议吗?
谢谢
编辑:
参数的数量是动态的,因此它可能是三个数字,如上例所示,一个或十二个.
我正在摆弄Swift中的泛型并找到一些我无法弄清楚的东西:如果我将一个值转换为泛型参数的类型,则不会执行强制转换.如果我尝试使用静态类型,它可以工作.
class SomeClass<T> {
    init?() {
        if let _ = 4 as? T {
            println("should work")
        } else {
            return nil
        }
    }
}
if let _ = SomeClass<Int?>() {
    println("not called")
}
if let _ = 4 as? Int? {
    println("works")
}
任何人都可以解释这种行为吗?这两种情况不应该相同吗?
以上示例简化为最大值.以下示例说明了需要更好的演员表
class SomeClass<T> {
    init?(v: [String: AnyObject]) {
        if let _ = v["k"] as? T? {
            print("should work")
        } else {
            print("does not")
            return nil
        }
    }
}
if let _ = SomeClass<Int?>(v: ["k": 4]) …