sqlite3 WHERE语句问题

sqlite3 WHERE statement issues

[self openDB];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *set = [defaults stringForKey:@"defaultSet"];
if ([set length] > 0) {
    NSString *trySql = [NSString stringWithFormat:@"SELECT setName FROM setData WHERE setName = `%@`", set];
    sqlite3_stmt *tryStatement;
    if (sqlite3_prepare_v2(db, [trySql UTF8String], -1, &tryStatement, nil)==SQLITE_OK) {
        NSLog(@"set here");
    } else {
        NSAssert(0, @"%s", sqlite3_errmsg(db));
        sqlite3_close(db);
    }
}

所以我return一个错误reason: 'no such column: set'

现在,这就是我通常的写作方式,除了我会使用 PDO:: 技术。php 但在 objective c 中它有些不同。我不确定我是否正确使用它。

我是否需要某种类型的 bindValue,或者我是否正在尝试查找具有行名称的列名称 and/or..?

反引号用于引用列名。 (SQL 实际上使用双引号,支持反引号只是为了与 MySQL 兼容。)

在SQL中,字符串用直单引号引起来:

... WHERE `SomeColumn` = 'SomeString'

无论如何,你应该use parameters