FMDB没有这样的表

Fed*_*ede 10 sqlite fmdb ios

我有一个sqlite项目的问题,我正在做,我正在使用FMDB,我按照一个简单的例子,但不起作用.我找不到错误.我从终端做了我的数据库架构,我把一些数据放在上面.我是ios dev的新手,所以我不确切知道我是否已经完成了这些步骤.这就是我做的:

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];           
}
Run Code Online (Sandbox Code Playgroud)

显然数据库是空的,发生了什么?为什么我找不到table1?如果我用任何sqlite gui打开文件,表格就好了.感谢任何帮助控制台向我展示下一行:2013-03-02 14:03:31.839 myApp [21433:c07] last错误:没有这样的表:table1 2013-03-02 14:03:31.841 myApp [21433: c07]结果:(null)

Rob*_*Rob 24

几点想法:

  1. 我确认数据库已添加到您的包中.转到目标设置,选择"Build Phases",展开"Copy Bundle Resources",并确保在那里列出您的数据库.如果没有,请单击"+"按钮并添加它.

    束

  2. 我会重置你的模拟器.如果您运行了应用程序并且未正确复制数据库,则会在文档文件夹中为您创建一个空白数据库.通过重置模拟器,您可以删除可能存在的任何空白数据库.

  3. 如果它仍然无法正常工作,我会在您的模拟器中检查捆绑数据库.导航到模拟器文件夹(〜/ Library/Application Support/iPhone Simulator),找到应用程序,打开捆绑包(通过控制点击应用程序本身并说出"显示包内容"),然后检查那里的数据库并制作确定它有你的table1.

  • 非常感谢你!就是这样,第1步和第2步完美无缺!我忘记了一步,新手的错误:D (3认同)