2013-10-23 48 views
-3

選擇數據下面是我的代碼,並且錯誤是可見的也:從SQLite的

enter image description here

在從Mozzila Firefox的SQLite的經理 - 所有的查詢工作的罰款,這意味着DB是正確的

也許有人可以讓我知道我的代碼有什麼問題嗎?

編輯:

我的代碼:

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

FMDatabase *db = [FMDatabase databaseWithPath:path]; 
//[db open]; 
if ([db open]==true) 
{ 
    FMResultSet *resultsFavorite = [db executeQuery:@"SELECT count(*) from favorites"]; 
    while ([resultsFavorite next]) 
    { 
     Pasaka *pasaka = [[Pasaka alloc]init]; 
     pasaka.title = [resultsFavorite stringForColumn:@"story_name"]; 
     pasaka.image = [resultsFavorite stringForColumn:@"image_path"]; 
     pasaka.movie = [resultsFavorite stringForColumn:@"video_path"]; 
     [favoriteMovieList addObject:pasaka]; 
    } 

} 

編輯2:

當我做這個查詢:

FMResultSet *results = [db executeQuery:@"SELECT count(*) FROM sqlite_master"]; 

它不顯示任何錯誤。

+0

假設我正在瀏覽禁用圖像。我看不到任何代碼。怎麼辦? – 2013-10-23 08:52:25

+0

添加程序代碼片段 – Cheese

+0

謝謝。這更有幫助。 – 2013-10-23 08:59:08

回答

1

您需要先在數據庫上覆制到文件夾(也檢查是否在複製包資源被正確地添加在你的項目設置的構建階段的源碼文件):

//Where your original database file is 
bundleDatabasePath = [[NSBundle mainBundle] pathForResource:@"stories_db" ofType:@"sqlite"]; 
//Where you will copy it in order to be used 
documentDatabasePath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingString:@"/stories_db.sqlite"]; 

//Using the default file manager 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error; 

//Copy empty database into document folder 
if (![fileManager copyItemAtPath:bundleDatabasePath toPath:databasePath error:&error]) { 
    //Error 
    NSLog(@"Could not copy the database into document folder. Error:%@", error); 
} 

//Use DB 
FMDatabase *db = [FMDatabase databaseWithPath:databasePath]; 
+0

已添加您的代碼: NSFilePath =/Users/artjomsfomenko/Library/Application Support/iPhone Simulator/7.0/Applications/A6250653-8F87-49CD-97D8-48C200DA6A9B/Pasakas.app/stories_db.sqlite,NSDestinationFilePath =/Users/artjomsfomenko/Library/Application Support/iPhone Simulator/7.0/Applications/A6250653-8F87-49CD-97D8-48C200DA6A9B/Documents/stories_db.sqlite,NSUnderlyingError = 0x8a81590「The operation could not be completed。File exists」} – Cheese

+0

這意味着我做了一切正常 – Cheese

+0

你能檢查數據庫文件到你的文檔文件夾嗎?也許這是它的舊版本,其中表'收藏夾'不存在。嘗試重新安裝應用程序以清理文檔文件夾。 – Brams

1

復位 iPhone模擬器,或者如果您在設備上測試應用程序刪除,

清潔工程,然後再次運行..

+0

清理了iOS模擬器,項目還是一樣 – Cheese

+0

你怎麼創建sqlite?以編程方式或拖放? –

+0

您必須在項目中添加應用程序。你有添加嗎? –

1

就到你的文件,你在DBPATH已經得到。看起來你的桌子不在那裏。只需從設備或模擬器中刪除您的應用程序,然後在dbpath中手動複製數據庫或使用NSFileManager將其複製並再次運行您的代碼。

0

找到了解決辦法。將我的數據庫文件移動到項目之上... O.o並且它工作...