2012-06-05 45 views
0

我正在與SQlite第一次.... 我在數據庫中查找折扣,並且每件事情都正常工作,直到我選擇「無」。如果金額(adNumbers)高於或低於數據庫中的指定值,則會發生這種情況。我的應用程序崩潰,如果我沒有從SQLite的記錄

然後,當試圖從數據庫列檢索折扣價值時,我得到一個錯誤和應用程序崩潰。我試圖做一個NULL檢查,但似乎並沒有幫助/工作。

我曾嘗試使用 while(sqlite3_step(compiledStatement) == SQLITE_ROW){

但我沒有得到任何東西回來在所有...

請點我在正確的方向 - 如何檢查數據庫返回的任何記錄(adNumbers是價值的衛浴間DB)

這是我的方法..

-(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; 

}

+0

當數據不存在或數據不在指定範圍內時,應用程序崩潰? –

回答

0

問題解決了

NSAssert1(0,@「獲取折扣'%s'時出錯」,sqlite3_errmsg(database));

正在墜毀 - 正如所料 - 真的!

相關問題