为什么我无法在IOS中使用FMDB读取我的SQlite

时间:2012-01-13 03:16:03

标签: ios sqlite fmdb

我从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)给我....

为什么......?

感谢您的帮助!

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

编辑:

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