【问题标题】:SQL Where Statement - Comparing to Instance Variable in CSQL Where 语句 - 与 C 中的实例变量比较
【发布时间】:2011-07-20 18:49:06
【问题描述】:

任何人都可以帮助我使用以下 WHERE 语句吗?我想说“名字就等于名字”。

NSString *query = [NSString stringWithFormat:@"SELECT Name, Description, Postcode, AddressLine1, ImageURL, Cost FROM MainDetails WHERE Name=@%", name];

提前致谢,

马丁

【问题讨论】:

  • 请记住,如果您不清理输入,这会使您很容易受到 SQL 注入攻击。
  • 抱歉 - SQL 新手 - 这是什么意思?>
  • 另一个想法,你可能想看看使用 Core Data 而不是必须手动编写 SQL。通过一个 Code Data 教程项目,您应该会在一天内启动并运行。

标签: sql objective-c xcode sqlite where


【解决方案1】:

字符串值需要在 SQL 中用引号引起来。所以你需要这样的东西:

NSString *query = [... "... Name='@%'", name];

(假设其余语法都有效,我不知道Objective-C)

【讨论】:

    【解决方案2】:

    看起来您缺少单引号。

    NSString *query = [NSString stringWithFormat:@"SELECT Name, Description, Postcode, AddressLine1, ImageURL, Cost FROM MainDetails WHERE Name='@%'", name];

    【讨论】:

    • 谢谢,但还是不行。 SQL 中的空格是否重要,例如,如果名称是“The Whitehouse”,它将与我的表中的“The Whitehouse”匹配吗?
    • 空格很重要。使用 = 运算符时,它必须完全匹配,包括正确的大写/小写。也许看看 LIKE 运算符。您可以使用通配符并让它忽略大小写。
    猜你喜欢
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多