2013-08-17 9 views
0

날짜가 변수 인 sqlite 데이터베이스에 테이블이 있습니다.데이터베이스에서 선택 날짜 = 오늘

-(void) readRecordsFromDatabaseWithPath:(NSString *)filePath { 

    sqlite3 *database; 

    if (sqlite3_open([filePath UTF8String], &database) == SQLITE_OK) { 
     const char *sqlStateMent = "select * from records where date = ?"; 
     sqlite3_stmt *compiledStatement; 
     NSLog(@"%d", sqlite3_prepare(database, sqlStateMent, -1, &compiledStatement, NULL)); 
     if (sqlite3_prepare_v2(database, sqlStateMent, -1, &compiledStatement, NULL) == SQLITE_OK) { 
      sqlite3_bind_text(compiledStatement, 1, [_todayDate UTF8String], -1, SQLITE_TRANSIENT); 
      while (sqlite3_step(compiledStatement) == SQLITE_ROW) { 
       NSString *recordid = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)]; 
       NSString *patientid = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]; 
       NSString *treatmentid = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)]; 
       NSString *date = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)]; 
       NSString *name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 4)]; 
       NSString *area = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 5)]; 
       NSString *level = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 6)]; 
       NSString *shots = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 7)]; 
       Record *newRecord = [[Record alloc] init]; 
       newRecord.patientid = patientid; 
       newRecord.recordid = recordid; 
       newRecord.treatmentid = treatmentid; 
       newRecord.date = date; 
       newRecord.name = name; 
       newRecord.area = area; 
       newRecord.level = level; 
       newRecord.shots = shots; 
       LSAppDelegate *delegate = (LSAppDelegate *)[[UIApplication sharedApplication] delegate]; 
       [delegate.records addObject:newRecord]; 
      } 
     } 
     sqlite3_finalize(compiledStatement); 
    } 
    sqlite3_close(database); 
} 

그런 다음 마지막으로 함수를 호출 :

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
self.dateFormatter = [[NSDateFormatter alloc] init]; 
[self.dateFormatter setDateStyle:NSDateFormatterShortStyle]; 
[self.dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
_todayDate = [self.dateFormatter stringFromDate:[NSDate date]]; 

내가 다음 날짜를 사용하는 SQL 문을 : 나는 일이 코드에 그 날에 무엇을 나에게 알려주는 기능을 설정 한 :

NSString *filePath = [self copyDatabaseToDocuments]; 
[self readRecordsFromDatabaseWithPath:filePath]; 
[self.tableView reloadData]; 

내가 목표 - C에 아주 새로운 오전 일반적으로 사람들이 몇 가지 코드를보고 싶어하지만 내가 코드의 광대 한 금액에 대한 죄송합니다. 내가 나 자신을 수행하는 방법을 발견 한 후 각 날짜 경우에 확인

+0

그리고 무엇이 문제입니까? 어쨌든, 가능한 답은 날짜 값의 형식이 일치하지 않는다는 것입니다. –

+0

날짜가 "오늘"인 모든 레코드를 원하십니까? 그렇다면 내 대답을보십시오. –

+0

@ ollie-cole이 댓글은 사용자의 질문과 관련이 없습니다. 모든 데이터베이스 작업에 [FMDB Framework] (https://github.com/ccgus/fmdb)를 사용하는 것이 좋습니다. 당신은 이것을 참조 할 수 있습니다 [대답] (http://stackoverflow.com/a/17268032/1017893) – icodebuster

답변

0

처럼 될 것입니다 문자열과 같았고 배열에 추가 한 경우

0

위의 코드는 당신에게

NSDate* date = [NSDate date]; 
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
    NSTimeZone *destinationTimeZone = [NSTimeZone systemTimeZone]; 
    formatter.timeZone = destinationTimeZone; 
    [formatter setDateStyle:NSDateFormatterLongStyle]; 
    [formatter setDateFormat:@"dd/MM/yyyy"]; 
    NSString* dateString = [formatter stringFromDate:date]; 

    NSLog(@"tha date is..%@",dateString); 

를 현재 날짜를 줄 것이다 당신의 선택 쿼리는이

NSString *queryString = [NSString stringWithFormat:@"select * from records where date ='%@'", dateString]; 
const char *sqlStateMent = [queryString UTF8String]; 
+0

나는 그것이 어디에도 없었지만 당신의가는 곳을보고 그것을 따라갔습니다. 나는 sqlstatement를 nslogged 한 다음 터미널에 복사하여 실행했다. 그런 다음 결과가 정말 이상하다. 뭐가 틀린가? – Hive7

관련 문제