2011-12-28 60 views
1

我有一個項目,其中包括FMDB來管理SQLite數據庫。我導入並鏈接了FMDB包裝,但問題是當我查詢數據庫時沒有顯示結果:iPhone fdbm SQLite沒有讀取數據

用Firefox SQLite管理器(Ubuntu)創建的sqlite數據庫,我將它複製到Xcode。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docsPath = [paths objectAtIndex:0]; 
NSString *path = [docsPath stringByAppendingPathComponent:@"db.sqlite"]; 

FMDatabase *db = [FMDatabase databaseWithPath:path]; 

[db open]; 

FMResultSet *fResult= [db executeQuery:@"SELECT * FROM mytable"]; 

while([fResult next]) 
{ 
    NSLog(@"%@",[fResult stringForColumn:@"title"]); 
} 
[db close]; 

回答

1

如果您複製數據庫到Xcode中,那麼你應該尋找在你的應用程序的主束資源路徑先在數據庫上,然後將其複製到文件目錄,如果它不存在,那裏還沒有,只有你可以使用它。您可能需要使用lastErrorMessagelastErrorCode消息來調試FMDatabase對象。當然

FMDatabase *db = [FMDatabase databaseWithPath:path]; 
NSLog(@"database instantiated: %@", db]; 

[db open]; 

NSLog(@"Database has encountered an error with message: %@. And code: %d", db.lastErrorMessage, db.lastErrorCode]; 

FMResultSet *fResult= [db executeQuery:@"SELECT * FROM mytable"]; 

while([fResult next]) 
{ 
    NSLog(@"%@",[fResult stringForColumn:@"title"]); 
} 
[db close]; 

其他問題可能聽起來很傻,但如果你的「MYTABLE」不包含什麼,while循環表達永遠是假的。但我最好的猜測 - 數據庫不在Documents目錄中。

+0

其實我在iphone上使用fdbm和資源文件夾中的數據庫文件 – shox 2011-12-28 08:55:50

+0

如果數據庫在資源文件夾中,那麼在資源文件夾中尋找,而不是文件 - [[NSBundle mainBundle] pathForResource:@「db」ofType:@「源碼「]; – Eugene 2011-12-28 08:57:33