2011-05-23 66 views
0

我在SQLite文件中保存了核心數據,但我很好奇coredata中的表名是什麼我有三個實體,其中一個是學生。如何在SQLite文件中保存核心數據

在嘗試使用SQLite語句來讀它,它不能進入​​,而

const char *sqlStatement = "SELECT * FROM students"; 

sqlite3_stmt *compiledStatement; 

if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 
    while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
     NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]; 
     NSLog(aName); 
    } 
} 

任何建議,爲什麼不進入if語句?

+0

作爲第一步,我會找出它返回的錯誤代碼並與以下對比:http://www.sqlite.org/c3ref/c_abort.html – badgerr 2011-05-23 15:55:21

回答

0

那麼,你不應該直接查詢你的CoreData表,CoreData是從代碼中抽象存儲。你應該使用NSFetchRequest。但要回答你的問題,該表通常會被稱爲zstudents。

+0

zstudents不工作,我正在遷移,因爲你告訴我從舊的存儲到新的,我關於版本的最後一個問題 – AMH 2011-05-23 14:25:35

+0

你需要做什麼(如果它是我)將有原始數據模型,稱爲「模型」,創建一個名爲「Model2」的新模型(此次版本)。你應該可以創建兩個NSPersistentStoreCoordinators,NSManagedObjectModel,NSManagedObjectContext等,每個模型一套。所以現在你可以通過CoreData查詢兩個完全不同的模型。現在,您可以使用標準的NSFetchRequest來加載'Model'中的數據並在'Model2'上創建新的實體,並相應地保存。 – 2011-05-23 14:48:00

+0

我做了你告訴我,但是這種關係導致異常的任何建議 – AMH 2011-05-23 17:15:03

0

你確定這個表實際上叫做學生嗎?基於sqlite數據庫的核心數據通常具有類似於ZStudents的表名。您可以使用免費的SQLite數據庫瀏覽器來查看.sqlite文件中的模式,但是我不得不懷疑,爲什麼在使用Core Data時編寫SQL語句?

+0

我從舊數據庫遷移到新數據庫,也是我沒有它在設備上的數據庫 – AMH 2011-05-23 14:21:03

+0

我可以得到sqlite文件中的所有表 – AMH 2011-05-23 14:22:33

+0

下載SQLite數據庫瀏覽器以查看模式(將.sqlite文件從您的設備複製到您的mac) – 2011-05-23 14:26:17