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;
}
當數據不存在或數據不在指定範圍內時,應用程序崩潰? –