【问题标题】:Write/Update data SQLite database in iOS在 iOS 中写入/更新数据 SQLite 数据库
【发布时间】:2013-08-14 13:44:08
【问题描述】:

我在 Flash Builder for iOS 平台中制作了一个应用程序

我已经编译了一个版本并将其安装在我的 iPhone 上,该应用程序与数据库通信,但它不会在数据库中写入/更新。可能是什么问题?设备权限还是数据库路径?

现在谢谢。

代码:

private var dbFile : File;
private var dbPath : String = "SAG.sqlite"; //name of database

 private function setaAPP():void{       
    if(app == 'ANDROID'){           
        dbFile = new File('/mnt/sdcard/SAG/' + dbPath); // to ANDROID       
    }else if(app == 'DESKTOP'){
        //app == DESKTOP
        dbFile = File.applicationDirectory.resolvePath(dbPath); // to DESKTOP               
    }else if(app == 'DEBUG'){
        //only to debug in Android          
        dbFile = File.applicationDirectory.resolvePath(dbPath); // to DEBUG in device
    }else if(app == 'IOS'){
        //app == IOS        
        dbFile = File.applicationStorageDirectory.resolvePath(dbPath); // to iOS
    }           
}

【问题讨论】:

  • 这是您打包应用时包含的sqlite db吗?
  • 是的,扩展名是.sqlite;在 Android 和桌面上运行良好,只有 iOS 我有这个问题。
  • 我现在看到了,文件存在!我添加代码:if(dbFile.exists) 并且文件存在,但问题仍然存在......
  • 现在我可以读取查询,但不能插入/更新/删除行...
  • 正确。应用程序目录不可写。如果您希望能够写入数据库,则需要将文件移动到可写的位置。

标签: ios sqlite flash-builder database-connection


【解决方案1】:

对于 iOS,我猜你想要这个:

dbFile = new File(dbPath);

虽然你也可以使用这个:

dbFile = File.applicationDirectory.resolvePath(dbPath);

来自Apple Documentation

在 iOS 应用程序中,非本地化资源位于 bundle 目录的顶层,以及应用程序的 可执行文件和 Info.plist 文件。

存储或“文档”文件夹将是空的,直到您在运行时将文件写入那里(也通过 iCloud 同步)。

【讨论】:

  • 一位朋友告诉我不要在 iPhone 中创建文件... Marcus,您是否尝试过使用此代码创建文件? ( dbFile = new File(dbPath); )
  • @RafaelGrando,创建一个新文件对象,而不是一个新文件。
  • 我不明白,你有我的例子吗? - (我是巴西人,我很难表达自己和理解你说的话......)
  • 我已经厌倦了使用它,但我需要解决,我不知道我还能做什么,文件存在,但它不是我的连接或什么......跨度>
  • 可能是 iOS 上的权限?现在我可以从查询中读取数据,但不能插入/更新/删除...
【解决方案2】:

如果结构与您的 ANDROID 或 DEBUG 项目相同(即打包时将 db 包含在根应用程序目录中),您应该能够像在那些项目中一样使用 File.applicationDirectory.resolvePath(dbPath)案例。

编辑:

app 目录是不可写的,所以如果你想写入数据库,你需要将文件移动到 Documents 目录,你可以通过 var docs:File = new File(File.userDirectory.nativePath + '/文档');

【讨论】:

  • 感谢您的回答,我在与 iTunes 同步时包含了数据库文件,但仍然无法正常工作。
  • 数据库文件是否包含在 Flash Builder 中的项目结构中?在打包应用程序时检查该文件是否包含(在“打包内容”选项卡下)。
  • 不,当我发布应用程序时,在“包内容”选项卡中没有出现我的数据库我需要做什么?
  • 在你的项目中的'src'文件夹下添加文件,然后确保它在'Package Contents'选项卡下被选中。
  • 这是我需要的!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
  • 1970-01-01
  • 2018-05-16
相关资源
最近更新 更多