2011-05-23 69 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