任何人可以幫助,我試圖用一個WHERE
語句來選擇一個SQLite數據庫&寫數據到NSMutableArray
,使用戶可以從一個UIPickerView
選擇減少數據量,簡單地他們使用選取器來選擇區域,然後SELECT
聲明查看UITextField
與他們選擇的區域&挑選該區域中的商店。sqlite的「其中」聲明不寫的NSMutableArray
如果我使用下面的代碼,我沒有得到任何數據在選擇器,如果我減少結果一個答案&結果寫入一個UITextField
我得到的數據,如果我刪除WHERE
聲明,我得到的數據在選擇器,但是每個商店都在DB中,而不僅僅是區域中的商店。
- (void) findStoreName{ storeFullName = [[NSMutableArray alloc]init];
const char *dbpath_rm1 = [databasePath UTF8String];
sqlite3_stmt *statementrm1;
if (sqlite3_open(dbpath_rm1, &storeData) == SQLITE_OK) {
NSLog(@"RM Names db opened");
NSString *querySQLPrm1 = [NSString stringWithFormat:@"SELECT Store1,Store2 FROM storeNames WHERE RM_N=\"%@\"",rmName.text];
const char *query_stmtrm = [querySQLPrm1 UTF8String];
if (sqlite3_prepare_v2(storeData, query_stmtrm, -1, &statementrm1, NULL) == SQLITE_OK)
while (sqlite3_step(statementrm1) == SQLITE_ROW) {
NSString *rm1 = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statementrm1, 0)];
NSString *rm2 = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statementrm1, 1)];
NSString *str = [[NSString alloc]initWithFormat:@"%@",rm1];
[storeFullName addObject:str];
NSString *str2 = [[NSString alloc]initWithFormat:@"%@",rm2];
[storeFullName addObject:str2];}
sqlite3_finalize(statementrm1);
}
sqlite3_close(storeData);NSLog(@"RM Names db Closed");
}
更新:
這是IBAction
代碼調用上述方法:
- (IBAction)acessdbStore:(id)sender {
[self findStoreName];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
dbStoreview.frame = CGRectMake(300, 430, 380, 288);
[UIView commitAnimations];
}
你初始化你的NSMutableArray? – 2014-09-26 10:39:27
我有一個快速衝浪來理解你的問題,答案是否定的,這是所有表格陣列所需的?因爲正如我所說,如果我刪除了Where語句的NSMutableArray數據填充,代碼應該看起來像什麼時候應該去,非常感謝 – 2014-09-26 10:50:59
我的意思是做storeFullName = [[NSMutableArray alloc] init];在添加任何objects.btw之前,如果它被填充,如果你刪除where語句,那麼這意味着你正在初始化它的某個地方。所以問題出在哪裏。考慮做WHERE RM_N ='%@'而不是WHERE RM_N = \「%@ \」 – 2014-09-26 10:57:24