gpt4 book ai didi

ios - iOS 的 sqlite 选择方法实现问题

转载 作者:行者123 更新时间:2023-11-29 12:07:24 25 4
gpt4 key购买 nike

我正尝试根据某个日期从我的 sqlite 表中检索一些数据,但出现 EXC_BAD_ACCESS(code=EXC_1386_GPFLT) 错误。这是我获取数据的方法-

 -(NSMutableArray*)fetchDataFromTable:(NSString*)tableName whenDate:(NSString*)activeDate{

NSMutableArray *resultArray=[[NSMutableArray alloc]init];

NSString *query = [NSString stringWithFormat:@"select * from %@ where ActiveDate = \"%@\"", tableName, activeDate];

if ([self canOpenDatabase]) { //checks if database can be openned
sqlite3_stmt *statement=nil;

if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, NULL) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW){
NSMutableArray *fetchedResults=[[NSMutableArray alloc]init];
int numberOfColumns = sqlite3_column_count(statement);

for (int i=0; i< numberOfColumns; i++){
char *dataAsChars = (char *)sqlite3_column_text(statement, i);

if (dataAsChars != NULL) {
NSString *dataString = [[NSString alloc] initWithUTF8String:dataAsChars];
[fetchedResults addObject:dataString];
}
}
[resultArray addObject:fetchedResults];

sqlite3_finalize(statement);
sqlite3_close(database);
}
}
else{
NSLog(@"Data can not be retrived");
}
return resultArray;
}
else{
return resultArray;
}
}

我也在尝试打印查询。它显示

select * from Time_table where ActiveDate = "2016-01-01"

请帮帮我。

最佳答案

有几个问题。

  1. 将对 sqlite3_close 的调用与成功打开数据库配对。
  2. 将对 sqlite_finalize 的调用与准备语句的成功配对。
  3. 不要关闭数据库或结束循环内的语句。
  4. 不要使用 stringWithFormat 构建查询。将值正确地绑定(bind)到准备好的语句中。

关于ios - iOS 的 sqlite 选择方法实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34551094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com