如何在iPhone上访问SQLite数据库实例?

时间:2008-10-01 21:42:51

标签: ios iphone sqlite

我正在开发一个使用内置SQLite数据库的iPhone应用程序。我正在尝试通过sqlite3命令行工具查看和打开数据库,这样我就可以对它执行任意SQL。

当我在模拟器中运行我的应用时,它创建的.sqlite文件位于~/Library/Application Support/iPhone Simulator/User/Applications/

如何在物理iPhone上看到该文件?

8 个答案:

答案 0 :(得分:69)

Xcode 6.0.1的说明

  1. Xcode>打开> YourProject
  2. Xcode>产品>运行
  3. Xcode>窗口>设备
  4. (第1列 - 选择)装置> YourDeviceName
  5. (第2栏 - 选择)已安装的应用> YourAppName
  6. (第2栏 - 选择)Cog'已安装的应用程序'列表
  7. (弹出式窗口 - 选择)下载容器......
  8. 保存到位置
  9. 右键点击' YourAppName.xcappdata'
  10. 选择'显示包装内容'
  11. AppData>文件> YourDatabase.sqlite
  12. enter image description here

答案 1 :(得分:43)

在Xcode中选择窗口 - >组织者,然后在手机的应用程序部分中展开应用程序旁边的节点。选择应用程序数据旁边的黑色向下箭头,并将文件保存在桌面上的任何位置。你的sqlite数据库应该在某处。

关于如何在完成后重新使用手机,我不知道。

答案 2 :(得分:2)

在XCode 4中,您可以像所建议的休息室一样,这会将您应用的整个文件结构保存到您选择的目的地。重命名保存为.sqlite的.xcappdata文件,这样您可以通过双击打开它,然后就可以从设备中找到该文件。

答案 3 :(得分:2)

如果你越狱你的iPhone,这个有用吗。我不知道为什么有人会越狱他们的手机有任何问题,因为我已经使用它开发很长一段时间并且发现没有问题,也不是设备与模拟器上的sqlite不常见perform differently

  1. Jail打破你的手机(网上有教程)
  2. 将您的cydia用户级别设置为developer
  3. 将sqlite3安装到手机中:转到cydia>管理>来源> cydia / telesphoreo> sqlite3的
  4. 使用iphone tunnel root ssh密码将ssh插入手机:“alpine”
  5. 键入which sqlite3以确保已安装
  6. 浏览到您的数据库的位置..代码中的断点应该告诉您它的位置..在我的代码中它看起来像这样

    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex: 0]; 
    NSString *pathName = [documentsDirectory stringByAppendingPathComponent:filename];
    return pathName;
    

    请注意,如果您在模拟器上运行它...您将获得如下位置: /Users/admin/Library/Application Support/iPhone Simulator/6.0/Applications/42302574-7722-48C1-BE00-91800443DA7C/Documents/email-524200.edb

  7. 在设备上它看起来像这样: /var/mobile/Applications/FB73857F-A822-497D-A4B8-FBFB269A8699/Documents/email-523600.edb

    然后只需输入sqlite3 %dbname%即可直接在手机上执行sql语句..无需复制或其他任何内容。

答案 4 :(得分:1)

与您在模拟器上完全相同的方式。设备和模拟器之间的差异很小(很重要),文件访问和库加载大部分都不是它们的一部分。

答案 5 :(得分:0)

你的问题仍然有点模糊。 “看”在什么意义上?你创建SQLite数据库了吗?怎么样?您是否已将其手动放入模拟器的文件系统区域?您是否可能会问如何在iPhone上执行此操作?

最简单的方法是使用sqlite3命令行工具预创建一个空数据库,将其作为应用程序中的资源,然后将其复制到应用程序沙箱的文档文件夹中。您可以通过NSBundle的pathForResource:ofType:方法获取资源文件夹的路径,然后通过NSUserDomainMaskMask中NSDocumentsDirectory文件夹的NSSearchPathForDirectoriesInDomains()获取Documents文件夹的路径,然后通过NSFileManager的方法复制文件。

否则,您可以使用SQLite的函数通过提供适当的SQL命令来定义其架构,从头开始创建新数据库。

答案 6 :(得分:0)

到目前为止,最简单的方法是使用iExplorer从您的应用程序下载文件。然后使用SQLite Professional read-only来读取文件。 甚至认为它不是实时的,但至少它是免费的。 : - )

答案 7 :(得分:0)

下载容器方法是我发现的最好的方法。但是,您必须要小心,如果您尝试通过电子邮件发送或从应用程序中附加它,那么发出的文件将为空。