繁体   English   中英

如何使用bundle中的数据移动sqlite3数据库

[英]How to move sqlite3 database with data from bundle

我在/ usr / bin目录中使用in终端创建了一个数据库(空):

touch /Users/myusername/Desktop/testopeningbook4.db

它显示在桌面上。 然后将其导入我的Xcode OSX项目(Mac app我做数据库处理),添加文件并选择复制文件到项目中,testopeningbook4.db显示在我的项目文件中的xcode(在项目导航器中)并在我的项目中应用程序的文件夹(在finder中)。 它不再在桌面上我想我删除了那个副本。

我在一个Objective-c代码文件/类中打开了数据库,我现在已经存储了几十万个条目,我相信(当我用select查询但是我没有计算时,确认它中有很多内容我只运行我的应用程序从xcode测试这个,因为select的结果现在缺少gui并且使用nslog转到控制台)。

看看我想做的是看文件有多大。 但是xcode项目文件夹中的那个表示它的0字节。 我这样打开它:

NSString *dbPath = [[[NSBundle mainBundle] bundlePath]stringByAppendingPathComponent:@"testopeningbook4.db"];

sqlite3 *database;
if(!(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK))
{
    NSLog(@"An error has occurred did not open database.");
    return false;
}
else
{
    NSLog(@"opened database");
}

理想情况下,我想要做的是复制testopeningbook4.db文件并将其导入到iOS的另一个xcode项目中,这次是用于iPhone / iPad应用程序。 但由于xcode项目文件夹中的文件是0字节,因此不能正确复制。 我找到了两个链接,并尝试了这两个想法(我已关闭页面,因为没有链接):

一个人说从Xcode项目导航器拖动数据库,你可以将它拖出一个副本到桌面上。 我做到了 它就像440千字节似乎很小,因为testopeningbook3(现已删除)大约是那个大小,我使用了一个小得多的源文件来获取它的数据,但是在xcode项目中大于0千字节。 我去了/ usr / bin并输入了

sqlite3 /databasepathtodesktop/testopeningbook4.db

然后在sqlite3命令提示符下键入

.tables 

并没有列出anthing引导我认为它是空的,而不是我的程序中的副本。

我从链接中找到的第二个想法是归档项目,然后将数据库从存档中取出。 所以我创建了一个.xcarchive文件并右键单击并显示包内容。 在内容中我进入我的应用程序并再次右键单击并显示包内容,然后我到达资源文件夹,我的数据库在那里,但它再次是0字节,就像我的项目目录中的那个。

如何将testopeningbook4.db与其中的数据和兆字节一起取回以导入另一个项目或在计算机之间移动。

我正在使用Xcode 5.1.1感谢Mike

编辑:修改标题以更具描述性的实际问题

我在捆绑包上使用sqlite数据库时遇到了一些问题。 尝试将其复制到文档目录并尝试一下。

NSString *nameDB = @"myDatabase.sqlite"
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:nameDB];
[[NSFileManager defaultManager] createFileAtPath:path contents:dataDB attributes:nil];

希望它有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM