2014-02-24 4 views
0

내부 SQLite 데이터베이스에 저장된 데이터 목록을 탐색해야하는 앱을 만들고 있습니다. 내 응용 프로그램에서 모든 데이터베이스 작업에 대해 FMDB를 사용하고 있습니다. 표시된 데이터에 다음 레코드 또는 이전 레코드가 있거나 다른 작업에 대해 버튼이 비활성화 된 경우 "다음"및 "이전"데이터를 사용할 수 있습니다. 사용자가 데이터 목록을 클릭하여 데이터의 ID를 보내 "데이터보기 영역"으로 이동합니다. 내 테이블 구조는 "데이터보기 영역"에서 테이블 MessageList의 (ID INT 기본 키, 제목 텍스트, 시간 텍스트, 메시지 텍스트)특정 레코드 다음에 또는 FMDB의 특정 레코드 앞에 행이 있는지 확인

를 작성, 내가 쿼리를 해고

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docsPath = [paths objectAtIndex:0]; 
NSString *path = [docsPath stringByAppendingPathComponent:@"message.sqlite"]; 
FMDatabase *database = [FMDatabase databaseWithPath:path]; 
[database open]; 
NSString *query = @"SELECT *,(SELECT id FROM messagelist WHERE id < "; 
query = [query stringByAppendingString:[NSString stringWithFormat:@"%@",_id_row]]; 
query = [query stringByAppendingString:@" ORDER BY id DESC LIMIT 1) AS previous_id,(SELECT id FROM messagelist WHERE id > "]; 
query = [query stringByAppendingString:[NSString stringWithFormat:@"%@",_id_row]]; 
query = [query stringByAppendingString:@" ORDER BY id ASC LIMIT 1) AS next_id FROM messagelist WHERE id = "]; 
query = [query stringByAppendingString:[NSString stringWithFormat:@"%@",_id_row]]; 
FMResultSet *results_one = [database executeQuery:query]; 
if([results_one next]) 
{ 

    NSLog(@"Previous id is %d and next id is %d", [results_one intForColumn:@"previous_id"],[results_one intForColumn:@"next_id"]); 
} 

어떤하지만 내 애플 리케이션의 안드로이드 버전이 쿼리와 함께 잘하고있다 같은 아무것도 반환하지 않습니다. 내가 잘못하고있는 곳을 알려주십시오.

N : B : SQLite 브라우저로 가져 와서 데이터베이스를 조사한 결과 id가 삽입되지 않았 음을 알았습니다. 가능하면 id가 기본 키로 선언되므로 그에 따라 자동으로 삽입되어야하고 그에 따라 증가해야합니다. . 고맙습니다.

답변

0

직접 해결되었습니다. 내가 대신 테이블 MessageList의 (ID INTEGER PRIMARY KEY, 제목 텍스트, 시간 텍스트, 메시지 텍스트)

을 만들 의 테이블 MessageList의 (ID INT 기본 키, 제목 텍스트, 시간 텍스트, 메시지 텍스트)를 생성 을 작성했다으로 기본 키가 삽입되지 않았습니다

해결 된 !!!!