我正在做的 sqlite 项目有问题,我正在使用 FMDB,我遵循一个简单的示例,但不起作用。而且我找不到错误。我从终端创建了数据库模式,并在上面放置了一些数据。我对 ios 开发非常陌生,所以我不知道我是否正确执行了这些步骤。
这就是我所做的:
1 - 我创建了数据库架构并添加了一些字段。 2 - 我将database.db复制到xcode中的项目文件夹中。 3 - 我添加 FMDB 文件。 4 - 我添加 sqlite3.dylib 5 - 我输入以下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.dbname = @"database.db";
NSArray * docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * docDIr = [docPath objectAtIndex:0];
self.dbpath = [docDIr stringByAppendingPathComponent:dbname];
[self checkDB];
[self getQ];
return YES;
}
-(void) getQ
{
FMDatabase * db = [FMDatabase databaseWithPath:dbpath];
[db open];
FMResultSet * result = [db executeQuery:@"SELECT * FROM table1"];
NSLog(@"last Error: %@",[db lastErrorMessage]);
NSLog(@"result: %@", result);
}
-(void) checkDB
{
BOOL success;
NSFileManager * fm = [NSFileManager defaultManager];
success = [fm fileExistsAtPath:dbpath];
NSError * error = [[NSError alloc] init];
if (success) return;
NSLog(@"result:");
NSString * dbPathFromApp = [[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:self.dbname];
[fm copyItemAtPath:dbPathFromApp toPath:dbpath error:&error];
}
显然数据库是空的,那么发生了什么?为什么我找不到 table1 ?如果我使用任何 sqlite gui 打开该文件,该表就会显示得很好。谢谢你的帮助
控制台向我显示以下几行:
2013-03-02 14:03:31.839 myApp[21433:c07] 最后一个错误:没有这样的表:table1
2013-03-02 14:03:31.841 myApp[21433:c07] 结果:(空)
有几点想法:
-
我确认数据库已添加到您的捆绑包中。转到目标设置,选择“构建阶段”,展开“复制捆绑资源”,并确保其中列出了您的数据库。如果没有,请单击“+”按钮并添加。
-
我会重置你的模拟器。如果您曾经运行过该应用程序并且没有正确复制数据库,它会在您的文档文件夹中为您创建一个空白数据库。通过重置模拟器,您可以删除可能存在的任何空白数据库。
-
如果它仍然不起作用,我会检查模拟器中的捆绑数据库。导航到模拟器文件夹(~/Library/Application Support/iPhone Simulator),找到该应用程序,打开捆绑包(通过控制单击应用程序本身并说“显示包内容”),然后检查其中的数据库并制作确定它有你的table1
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)