是否可以直接从bundle路径访问sqlite db或者将sqlite db从bundle复制到documentary路径然后访问sqlite db? 哪种方法有效?任何人都可以就此提出建议吗?
答案 0 :(得分:1)
您无法更改捆绑包中的文件。如果需要更改数据库,则需要将其复制到Documents目录中。但是如果没有更改数据库,您可以将其保存在捆绑包中。但人们通常会在Documents目录中创建数据库副本。
更改数据库=操纵数据库记录。
答案 1 :(得分:0)
最好将数据库复制到库或文档目录,并从文档或库文件夹中的本地保存的数据库中进行所有处理。
我更喜欢将它保存到库文件夹,以便用户无法打开和删除它,只是为了安全起见。 如果您从主软件包访问数据库,则可能会出现问题,如果您升级应用程序版本并希望对数据库进行更改,则会出现问题。
因此,更好的选择是将数据库保存到文档或库文件夹并从那里访问它。
希望它有道理。
答案 2 :(得分:0)
如果要直接从文档目录访问或读取数据库数据,
您必须以编程方式将数据库复制到文档目录,然后您可以使用以下代码访问数据库(选择,更新,删除操作)。
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* foofile = [documentsPath stringByAppendingPathComponent:@"XYZ.sqlite"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];
if(fileExists)
{
if (foofile)
{
myText = [[NSString alloc] initWithContentsOfFile:foofile];
if (myText)
{
[self start];
}
else{;}
}
}
else
{
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"XYZ"
ofType:@"sqlite"];
if (filePath)
{
myText = [[NSString alloc] initWithContentsOfFile:filePath];
if (myText)
{
[self start];
}
else
{;}
}
}