【问题标题】:Problems with iPhone and sqlite queryiPhone 和 sqlite 查询的问题
【发布时间】:2011-03-09 02:33:02
【问题描述】:

当我尝试运行我的程序时出现以下错误。我得到它的任何理由?我已经尝试了几个小时,但我放弃了。谢谢!

错误:

2011-03-08 19:18:29.967 iphoneApp[2561:207] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* +[NSString stringWithUTF8String:]: NULL cString '

- (AnswerDTO *)findAnswerById:(NSInteger)primary_key {
    AnswerDTO *dto = [[[AnswerDTO alloc] init] autorelease];

    sqlite3_stmt *statement = nil;
    const char *sql = "SELECT * FROM klb_answers WHERE id = 7;";

    if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) { 
        sqlite3_bind_int(statement, 1, primary_key);

        NSInteger answerId = sqlite3_column_int(statement, ANSWER_ID);
        NSInteger answerQuestionId = sqlite3_column_int(statement, ANSWER_QUESTION_ID);
        NSString *answerDescription = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, ANSWER_DESCRIPTION)];
        NSString *answerSerialNumber = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, ANSWER_SERIAL_NUMBER)];
        NSInteger answerIsCorrect = sqlite3_column_int(statement, ANSWER_IS_CORRECT);

        dto.answerID = answerId;
        dto.questionID = answerQuestionId;
        dto.description = answerDescription;
        dto.serialNumber = answerSerialNumber;

        if (answerIsCorrect == 0) {
            dto.isCorrect = NO;
        } else {
            dto.isCorrect = YES;
        }
    } else {
        NSLog(@"Noe feil med statementet");
    }

    sqlite3_finalize(statement);

    return dto;
}

【问题讨论】:

  • 只有受虐狂才使用 Objective-C 中的 SQLite C API。 Use FMDBCoreData 代替。

标签: iphone objective-c sqlite


【解决方案1】:

您似乎没有“运行”您的查询。你准备好了它并绑定了你的参数,但你从未运行 sqlite3_step() 来执行查询并获得响应。即使它是单个记录或标量。

因此,您的列函数返回空值。

【讨论】:

  • 不客气。在我的第一个 sqlite 项目中发生在我身上……每次都发生在我身上。我可以建议使用 Core Data 进行数据库持久性吗?或者甚至可能是 sqlite 的众多包装器之一(TouchSQL 等)?使其更加面向对象。然而,没有什么比第一次学习硬(-er)方式来获得对框架的尊重更重要了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多