任何人可以帮助,我试图用一个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