2012-02-04 3 views
1

iOS 응용 프로그램에 SQLite 데이터베이스가 있습니다. 나는 6 자리 혼수 상태 후 열 번호의 SQL 함수 MAX()iOS SQLite - Max() Function

- (void) getMaxTime { 

if (sqlite3_open([databasePath UTF8String], &timingsDatabase) == SQLITE_OK) 
{ 
    NSString *maxTimeStatement = [NSString stringWithFormat:@" SELECT max(NUMBERS) FROM TIMINGS"]; 
    sqlite3_stmt *statement; 
    if(sqlite3_prepare_v2(timingsDatabase, [maxTimeStatement UTF8String], -1, &statement, nil) == SQLITE_OK){ 
     while (sqlite3_step(statement) == SQLITE_ROW) { 
      massimo = sqlite3_column_int(statement, 0); 

      NSLog(@"The maximun time is %d seconds ", massimo); 
     } 
     sqlite3_finalize(statement); 
     sqlite3_close(timingsDatabase);  
    }  
} 

모든 번호를 사용하는 것을 시도하고있다. 모든 숫자가> 10 또는 모든 숫자가 < (10)

그러나 경우
모든 것이 잘 작동 (예) 나는 중 최대를 얻을하려고하면

  • 1.339670
  • 2.955537
  • 11.355558

그것은 인쇄 :는 "항목 최대 시간 2 초입니다"(instea을 11의 d)! 나는 이유를 이해하려고 고심하고있다.

*이 편집

이 내 데이터베이스를 생성하는 방법입니다

-(void)createDatabase 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    databasePath = [[NSString alloc]initWithString:[documentsDirectory stringByAppendingPathComponent:@"timings.db"]]; 

    if ([[NSFileManager defaultManager] fileExistsAtPath:databasePath] == FALSE) 
    { 
     if (sqlite3_open([databasePath UTF8String], &timingsDatabase) == SQLITE_OK) 
     { 
      const char *sqlStatement = "CREATE TABLE IF NOT EXISTS TIMINGS (ID INTEGER PRIMARY KEY AUTOINCREMENT, TIMESTAMP TEXT, TIMING TEXT, NUMBERS TEXT)"; 
      char *error; 
      sqlite3_exec(timingsDatabase, sqlStatement, NULL, NULL, &error); 
      sqlite3_close(timingsDatabase); 
     } 
    } 
} 

을 그리고이 타이밍이 저장되는 방법입니다

-(void)storeTiming 
{ 
    if (sqlite3_open([databasePath UTF8String], &timingsDatabase) == SQLITE_OK) 
    { 
     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
     [dateFormatter setDateFormat:@"HH:mm:ss.SSS"]; 

     NSString *insertStatement = [NSString stringWithFormat:@"INSERT INTO TIMINGS (TIMESTAMP, TIMING, NUMBERS) VALUES (\"%@\", \"%@\", \"%f\")", [dateFormatter stringFromDate:startDate], stopWatchLabel.text , intervallo] ; 


     char *error; 
     sqlite3_exec(timingsDatabase, [insertStatement UTF8String], NULL, NULL, &error); 
     sqlite3_close(timingsDatabase); 
    } 
} 
+0

해당 열의 유형은 무엇입니까? – Mat

+0

잘못된 열 유형이 답 일지 모르지만 열 유형을 부동 숫자로 올바르게 설정하는 방법을 모르겠습니다. –

답변

0

는 열의 데이터 형식은 문자열 보인다 ... MAX() 함수를 사용하려면 float로 변경해야합니다.

+0

어떻게 변경할 수 있습니까? 데이터베이스 생성시해야합니까? –

+0

고마워요. 나는 그것을 부유하게 만드는 법을 알아 냈고 지금은 작동합니다. –