我正在我的应用程序中创建数据库,创建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/