在iPhone中集成sqlite

在iPhone中集成sqlite

我正在我的应用程序中创建数据库,创建Db之后,我试图将数据库从应用程序捆绑包复制到Doc目录。但是我无法复制它,我收到了类似的错误
操作无法完成。 (可可错误260。)
下面显示的是我正在使用的代码,请帮助我解决此问题

dbName="userDetails.db";
returnCode=sqlite3_open(dbName,&handler);
if(returnCode!=SQLITE_OK)
    NSLog(@"message---%s",sqlite3_errmsg(handler));
else
    NSLog(@"sucess---%d",returnCode);

NSFileManager *fmgr=[NSFileManager defaultManager];
NSError *error;
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *path=[paths objectAtIndex:0];
NSString *docPath=[path stringByAppendingPathComponent:@"userDetails.db"];
if(![fmgr fileExistsAtPath:docPath]){
    NSString *defaultDBPath=[[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@"userDetails.db"];
    if(![fmgr copyItemAtPath:defaultDBPath toPath:docPath error:&error])
        NSLog(@"failure message----%@",[error localizedDescription]);
}

最佳答案

实际上,我对您的代码不太困惑。您是否正在尝试以编程方式在应用程序捆绑包中创建数据库,然后将其复制到documents目录?如果您正在执行此操作,则需要知道您无法在应用程序捆绑包中创建或修改任何内容。您必须在Documents目录中创建此数据库。你应该做这样的事情-

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
    NSString *documentsDir = [paths objectAtIndex:0];

    NSString * databasePath = [documentsDir stringByAppendingPathComponent:@"XYZ.sqlite"];

    // generate databasePath programmatically
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
    {

        // your  code here
    }

但是,如果您的应用程序中已经有一个数据库(而不是动态创建),而您只想将其复制到documents目录,则应该遵循@Santosh Gurram的答案。

关于iphone - 在iPhone中集成sqlite,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8265621/

10-11 09:24