0

我第一次使用 SQlite....我在数据库中查找折扣,一切正常,直到我选择“无”。如果金额 (adNumbers) 高于或低于数据库中指定的值,则会发生这种情况。

然后,当尝试从 DB 列中检索折扣值时,我收到错误并且应用程序崩溃。我试图进行 NULL 检查,但这似乎没有帮助/工作。

我试过用 while( sqlite3_step(compiledStatement) == SQLITE_ROW){

但我根本没有得到任何回报......

请指出正确的方向 - 我如何检查数据库是否返回任何记录(adNumbers 在数据库中的值之间)

这是我的方法。。

-(NSString *) adDisq:(NSString *)strDISQ:(NSInteger)adNumbers{

NSString *strDiscount;
strDiscount = @"00";

if(adSTMT == nil) {
    const char *sql = "SELECT ID, DISCOUNT_TYPE, DESCRIPTION, AD_FROM, AD_TO, AD_DISQ FROM DISCOUNT "
                      "WHERE (((DISCOUNT_TYPE)=?) AND ((?) Between AD_FROM And AD_TO))";

    if(sqlite3_prepare_v2(database, sql, -1, &adSTMT, NULL) != SQLITE_OK)
        NSAssert1(0, @"Error while creating detail view statement. '%s'", sqlite3_errmsg(database));
}

sqlite3_bind_text(adSTMT, 1, [strDISQ UTF8String], -1, SQLITE_STATIC);
sqlite3_bind_int(adSTMT, 2, adNumbers);   

if(SQLITE_DONE != sqlite3_step(adSTMT)) {
    NSLog(@"SELECT went OK, getting rows");
    const char *columnText = (const char *)sqlite3_column_text(adSTMT, 5);
    if(columnText != NULL){
        strDiscount = [NSString stringWithUTF8String:(char *)sqlite3_column_text(adSTMT, 5)];
        NSLog(@"Discount: %@", strDiscount);
    }
    else {
        strDiscount = @"00";
    }
}
else{
    NSAssert1(0, @"Error while getting the discount'%s'", sqlite3_errmsg(database));
}

//Reset the detail statement.
sqlite3_reset(adSTMT);
return strDiscount;

}

4

1 回答 1

0

问题解决了

NSAssert1(0, @"获取折扣时出错'%s'", sqlite3_errmsg(database));

Was making the crash - as expected - doh !

于 2012-06-06T15:43:27.443 回答