objective-c - 查询选择 Sqlite Objective C iphone

标签 objective-c sqlite

嗯,我的查询有问题,我不知道为什么!请帮忙

我尝试从名为 moneda 的表中选择一个 ID,并给出类似参数的名称,

这是我的查询方法:

-(int)ConsultaIdMoneda:(NSString*) nombreMonedaParametro
{
    int idMonedaObtenido;
    NSLog(@" entre a consultar id de la moneda desde el app delegate");
    sqlite3 *database;

    const char *path = [[[NSBundle mainBundle] pathForResource:@"database2" ofType:@"sqlite"] UTF8String];
    if(sqlite3_open(path, &database) == SQLITE_OK)      
    {
        const char *sqlStatement =[[NSString stringWithFormat:@"Select idMoneda from moneda Where nombre = %@",nombreMonedaParametro] cStringUsingEncoding:NSUTF8StringEncoding];

        NSLog(@"%s",sqlStatement);
        sqlite3_stmt *compiledStatement;
        NSInteger result = sqlite3_prepare_v2(database,sqlStatement, -1, &compiledStatement, NULL);
        NSLog(@"%s",sqlStatement);
        if(result == SQLITE_OK) 
        {
            idMonedaObtenido = [[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)] intValue];
        }
        else
        {
            NSAssert1(0, @"Error . '%s'", sqlite3_errmsg(database));            
        }
        sqlite3_reset(compiledStatement);
        sqlite3_finalize(compiledStatement);
    }

    sqlite3_close(database);
    return idMonedaObtenido;        
}

这是错误:

2009-12-03 00:28:45.715 BCDTravel[1220:20b] *** Assertion failure in -[BCDTravelAppDelegate ConsultaIdMoneda:], /Users/Mely/Desktop/BCDTravel version 45/Bcd/Classes/BCDTravelAppDelegate.m:101
2009-12-03 00:28:45.717 BCDTravel[1220:20b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error haciendo el select. 'no such column: euros''

我认为问题出在这一行,但我不知道如何解决建议!!

const char *sqlStatement =[[NSString stringWithFormat:@"Select idMoneda from moneda Where nombre = %@",nombreMonedaParametro] cStringUsingEncoding:NSUTF8StringEncoding];

最佳答案

因为您要传递字符值,所以需要在 SQL 中的参数两边加上引号。

例如:

SELECT idMoneda
FROM   moneda
WHERE  nombre = '%@'

否则,当编译 SQL 时,您传入的值本身将被视为列名(欧元),而不是 nombre 列的候选值。

建议您考虑使用准备好的语句,而不是“手动”组装字符串。 请参阅this related SO question .

关于objective-c - 查询选择 Sqlite Objective C iphone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1838146/

相关文章:

iphone - 如何在 ios 中加载 wfm(线框)

ios - 核心数据 : when to 'free' unused NSManagedObjects with [ refreshObject:obj mergeChanges:NO]?

python - 解码Python字符串

android - 尝试写一个只读数据库......但我不是

sql - 如何在 SQL 中获取插入行的 Id

ios - UIImageView - 如何获取分配的图像的文件名?

ios - 为什么 SLRequest 获取 Twitter 关注者会在 iOS 6.1 而不是 7.1 上崩溃

ios - 如何使用 coreLocation 框架在 iOS 7 中计算速度

sql - 从表中删除第二个表中存在匹配项的行

java - 我无法删除 sqlite 中的日期