2011-03-06 4 views
0

내 응용 프로그램에 FMDB를 사용하여 sqlite에 데이터를 저장합니다. 여기 내 코드는FMDB 결과 세트에 null이 있습니다. iphone

AppDelegate에에서

- (void)applicationDidFinishLaunching:(UIApplication *)application 

{

FMDatabase * dB = [FMDatabase databaseWithPath : @ "/ tmp를/sql.sqlite"];

if (![db open]) { 
    NSLog(@"Could not open db."); 

} 
NSLog(@"DB opened successfully"); 

// 전체 코드는

}

내가

-(IBAction)insertButtonClicked:(id)sender 

의 ViewController

코드 다음 한 여기에 표시되지 { NSLog (@ "insertButtonCLicked에서");

[db beginTransaction]; 

[db executeUpdate:@"insert into sample (url) values (?)",@"google'"]; 

[db commit]; 

}

- (IBAction를가) displayButtonClicked (ID) 보낸 사람

{

NSLog(@"in DisplayCLicked"); 

FMResultSet *rs = [db executeQuery:@"select url from sample"]; 

NSLog(@"Rs contains => %@",rs); 

while([rs next]) 
{ 

    NSLog(@"%@",[rs stringForColumn:@"url"]); 
} 
[rs close]; 

}

내가이 코드를 실행하면 내가 같은 RS는 null를 얻을 다음에 표시된 (이것은 콘솔의 o/p 임)

012 30 :
2011-03-07 07:30:06.919 InsertDataSample[3092:20b] DB opened successfully 

2011-03-07 07 3,516,InsertDataSample 13.341 [3092 : 20B] insertButtonCLicked

2011-03-07 07 : 30 : 16.860 InsertDataSample [3092 : 20B] DisplayCLicked

2,011 -03-07 07 : 30 : 16.860 InsertDataSample [3092 : 20b] R에 => (null)

Plz 나를 도와주세요. 나는 여러 날부터 FMDB에서 일하고있다. 그러나 나는 FMDB를 사용할 수 없다. 미리 감사드립니다.

답변

4

검색어 입력 후 바로 삽입하면 FMDB에서 문제의 원인을 정확하게 알려줍니다.

if ([db hadError]) { 
    NSLog(@"DB Error %d: %@", [db lastErrorCode], [db lastErrorMessage]); 
} 

업데이트 :이 실행

는 : 답장을

2011-03-06 12:38:59.831 test[93163:207] google' 
+0

Thnkas :

FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/sql.sqlite"]; [db executeUpdate:@"create table sample (url TEXT);"]; [db executeUpdate:@"insert into sample (url) values(?);", @"google'"]; FMResultSet *rs = [db executeQuery:@"select url from sample;"]; while ([rs next]) { NSLog(@"%@", [rs stringForColumn:@"url"]); } [rs close]; [db close]; 

이 출력을 생산했다. 그러나 결과 집합에 NULL이 포함되어있는 경우에도 여전히 동일한 문제가 발생합니다. FMDB에서 프로그램 적으로 테이블을 생성해야합니까? Bcoz 터미널을 사용하여 sample.sqlite를 만들고 쿼리 작성 만하고 내 리소스 libsqlite3.0.dylib에 해당 파일을 추가했습니다. – iOSAppDev

+0

그러나 새 코드가 추가되면 로그 출력에 DB 오류가 표시됩니까? 그리고 네, 행을 삽입하기 전에 'sample'테이블을 생성해야합니다. (executeUpdate 후에 오류 로그 출력을 추가 할 수도 있습니다.) –

+0

새 코드를 추가 한 후에도 오류가 없습니다. viewDidLoad 메서드에서 테이블을 만들었습니다. 여전히 동일한 문제, 레코드 세트가 null입니다. – iOSAppDev

관련 문제