我从firefox工具创建了一个DB文件,SQlite管理器命名为myTestDB
db有一个表名ViewController1,表内容有5列(那里的值都是TEXT)
我希望按列名读取值,所以这是我的代码....
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *myDbPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myTestDB.sqlite"];
FMDatabase *myDB = [FMDatabase databaseWithPath:myDbPath];
if (![myDB open]) {
NSLog(@"Could not open db.");
return ;
}
else
{
NSLog(@"DB open!");
}
FMResultSet *rs = [myDB executeQuery:@"SELECT * FROM ViewController1"];
for (int i =0; i<[rs columnCount]; i++) {
NSLog(@"%@",[rs stringForColumnIndex:i]);
}
}
有许多示例代码使用方法
while([rs next])
{
//Loading somethin...
}
但如果我使用它,代码将不会进入while循环甚至一次
我的代码只记录5(null)给我....
为什么......?
感谢您的帮助!
您也可以用中文回答我,谢谢您!
答案 0 :(得分:0)
尝试在模拟器中注销完整路径,然后转到终端中的该路径并使用sqlite3 cmdline工具: - 验证数据库是否存在 - 您可以执行查询。
http://zetcode.com/databases/sqlitetutorial/tool/
请记住,sqlite是懒惰的 - 它会按需创建一个数据库(在第一次写入时),因此您可能会按需创建一个空数据库,而不是打开您认为正在打开的数据库。
如果您想要写入数据库,还需要将数据库从资源复制到库或文档。资源中的数据库应该是一个起始模板。
编辑:
上述建议不是原因。我会留下答案而不是删除,以帮助其他人知道什么不是问题。