0

我已经从 Firefox 工具 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)....

这是为什么...?

感谢您的帮助!

您也可以用中文回答我,谢谢您!

4

1 回答 1

0

尝试在模拟器中注销完整路径,然后在终端中转到该路径并使用 sqlite3 cmdline 工具: - 验证数据库是否存在 - 您可以执行查询。

http://zetcode.com/databases/sqlitetutorial/tool/

请记住,sqlite 是惰性的 - 它会按需创建一个数据库(在第一次写入时),因此您可能会按需创建一个空数据库,而不是打开您认为正在打开的数据库。

如果您想写入数据库,还需要将数据库从资源复制到库或文档。您资源中的数据库应该是一个起始模板。

编辑:

上面的建议不是原因。我会留下答案而不是删除以帮助其他人知道什么不是问题。

于 2012-01-13T03:27:08.657 回答