Ios 如何调用sqlite3\u errmsg以了解sqlite3\u prepare\u v2失败的原因

Ios 如何调用sqlite3\u errmsg以了解sqlite3\u prepare\u v2失败的原因,ios,objective-c,xcode,sqlite,Ios,Objective C,Xcode,Sqlite,基于C的函数sqlite3\u prepare\u v2返回1。我只是想知道可读形式的错误消息并更正代码。我是在raywinderlich博客上作为教程学习的。我遇到过sqlite3\u errmsg,我不知道如何使用sqlite3\u errmsg函数 虽然有人问过同样的问题,但不幸的是,仍然没有人回答 我想知道的错误和更正将高度赞赏。谢谢 - (NSArray *)failedBankInfos { NSMutableArray *retval = [[NSMutableArray

基于C的函数
sqlite3\u prepare\u v2
返回1。我只是想知道可读形式的错误消息并更正代码。我是在raywinderlich博客上作为教程学习的。我遇到过
sqlite3\u errmsg
,我不知道如何使用
sqlite3\u errmsg
函数

虽然有人问过同样的问题,但不幸的是,仍然没有人回答

我想知道的错误和更正将高度赞赏。谢谢

- (NSArray *)failedBankInfos {
    NSMutableArray *retval = [[NSMutableArray alloc]init];
    NSString *query = @"SELECT id, name, city, state FROM failed_banks ORDER BY close_date DESC";
    sqlite3_stmt *statement;
    int tmp  = sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil);
    NSLog(@"%i",tmp); // printing 1
    if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil)
        == SQLITE_OK) {
        while (sqlite3_step(statement) == SQLITE_ROW) {
            int uniqueId = sqlite3_column_int(statement, 0);
            char *nameChars = (char *) sqlite3_column_text(statement, 1);
            char *cityChars = (char *) sqlite3_column_text(statement, 2);
            char *stateChars = (char *) sqlite3_column_text(statement, 3);

            NSString *name = [[NSString alloc] initWithUTF8String:nameChars];
            NSString *city = [[NSString alloc] initWithUTF8String:cityChars];
            NSString *state = [[NSString alloc] initWithUTF8String:stateChars];
            NSLog(@"name is  : %@",name);
             NSLog(@"city is : %@",city);
            FailedBankInfo *info = [[FailedBankInfo alloc]
                                    initWithUniqueId:uniqueId name:name city:city state:state];
            [retval addObject:info];
        }
        sqlite3_finalize(statement);
    }
    else
    {
        // if part is failing and control is arriving in else.
    }
    return retval;

}

您可以像这样使用
sqlite3\u errmsg()

NSLog(@"Database Error Message : %s", sqlite3_errmsg(_database));
您还可以使用
sqlite3\u errstr()

sqlite3_errmsg()和sqlite3_errmsg16()返回英语 将错误分别描述为UTF-8或UTF-16的文本。 保存错误消息字符串的内存是内部管理的。这个 应用程序不需要担心释放结果。然而, 错误字符串可能会被后续操作覆盖或取消分配 调用其他SQLite接口函数

sqlite3_errstr()接口返回 描述结果代码,如UTF-8。用于保存错误消息的内存 字符串是内部管理的,应用程序不能释放该字符串

参考

请注意sqlite3_errstr()在SQLite V3.7.15之前不可用,因此在iOS7.x中不可用。