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

标签 ios macos sqlite

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

touch /Users/myusername/Desktop/testopeningbook4.db

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

我在一个 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 KB,这似乎很小,因为 testopeningbook3(现已删除)大约是那个大小,我使用了一个小得多的源文件来存储它的数据,但在 xcode 项目中大于 0 KB。我去了/usr/bin 并输入了

sqlite3 /databasepathtodesktop/testopeningbook4.db

接下来在sqlite3命令提示符下输入

.tables 

而且它没有列出让我认为它是空的,而不是在我的程序中工作的副本。

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

我如何取回 testopeningbook4.db 及其所有数据和兆字节以导入到另一个项目或在计算机之间移动它。

我正在使用 Xcode 5.1.1 谢谢 Mike

编辑:修改标题以更准确地描述实际问题

最佳答案

我在使用 bundle 中的 sqlite 数据库时遇到了几个问题。尝试将其复制到文档目录中并尝试一下。

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

希望它有用

关于ios - 如何使用 bundle 中的数据移动 sqlite3 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23346477/

相关文章:

iOS - 在后台 iOS 8 和 Swift 中播放歌曲 15 分钟后

ios - 如何使用蓝点在我的 MKMapView 上显示我的当前位置和区域?

macos - FSGetVolumeInfo 是 NSWorkspace 已弃用的 MountedLocalVolumePaths 方法的推荐替代方法吗?

php - 如何在 Mac OS X (10.9.4) 中修复 'PHP' make?

java - 自动增量问题-向数据库添加条目并同时显示它们的最佳方式

ios - 在 iOS 中以波形切割 View

ios - ScrollView 中的 TableView

bash - 使用 FFmpeg 有条件地旋转风景的纵向视频

android - arraylist 没有正确更新

performance - SQLite 索引性能