我在一个普通的Objective-C iPhone应用程序中使用UIWebView。显示在UIWebView中的网页通过javascript写入HTML5客户端SQL数据库。我想打开这个数据库来读取和写入iPhone应用程序。这可能吗?如果是这样,我怎么找到数据库,我可以使用SQLite框架来打开它们?我可以通过iPhone应用程序(objective-C)打开HTML5客户端数据库吗?
回答
HTML5数据库位于应用程序的沙箱外,无法直接访问。如果您可以控制在UIWebView中显示的网页,则可以构建一个相对简单的JavaScript桥来获取内容并将它们插入到您自己的SQLite数据库中。
我不认为它以这种方式暴露。
首先,我不认为UIWebView
s将有一个客户端数据库持续跨多个会话(虽然它可能,我没有测试过)。其次,它肯定不会让你直接访问SQLite数据库文件本身。
你最好的选择将被调用JavaScript到web视图与
[webView stringByEvaluatingJavascriptFromString:@"mySqlQueryingFunction()"]
让JavaScript中访问数据库为您服务。
由于这是本线程中投票次数最多的答案,我必须通知其他用户阅读。这两种假设都是错误的(客户端本地存储仍然存在,您可以访问sqlite文件)。有关更多信息,请参阅http://stackoverflow.com/questions/9067249/how-do-i-access-html5-local-storage-created-by-phonegap-on-ios。 – db42 2014-06-15 08:26:46
老问题,但我发现这个问题,同时谷歌搜索主题,并认为我会更新与解决方案。
的localStorage的数据库是SQLite数据库和存储在<APPLICATION_HOME> /图书馆/ WebKit的/ localStorage的,并为您的应用程序数据库会像file__0.localstorage
您可以获取路径与一些文件像这样:
NSString * fullPath = [NSHomeDirectory()stringByAppendingPathComponent:@“Library/WebKit/LocalStorage/file__0.localstorage”];
希望这可以帮助任何正在研究此问题的人。
UIWebView
的WebKit实例使用的SQLite数据库实际上是<Application_Home>/Library/WebKit/LocalStorage/file__0/
,例如, 0000000000000001.db
。
- 1. 通过远程应用程序打开客户端应用程序
- 2. HTML5客户端应用程序打开文件对话框
- 3. 如何通过浏览器打开客户端应用程序?像Secondlife.com它打开第二生命客户端
- 4. 我可以通过服务器实现客户端 - 客户端通信吗?
- 5. iPhone应用程序:我可以通过网站中的链接打开应用程序吗?
- 6. 我可以在C++ 11客户端应用程序库中使用C++ 14吗?
- 7. 我可以通过我的应用程序使用SharePoint 2010 SQL数据库吗?
- 8. 我在哪里可以了解如何将html5用于客户端数据库应用程序?
- 9. 通过AppStore发布iPhone应用程序的客户端
- 10. 我可以通过iPhone应用程序调用Web服务而不是从数据库中获取数据吗?
- 11. 以编程方式打开iPhone的iPhone邮件客户端
- 12. 我可以使用HTML5发送客户端电子邮件吗?
- 13. 我可以让我的应用程序在yahoo邮件或Gmail客户端中打开一封新邮件吗?
- 14. 可以通过.Net安装打开Access数据库吗?
- 15. 我可以通过Dropbox共享一个MS-Access数据库应用程序吗?
- 16. 使用Javascript打开客户端程序
- 17. Flex应用程序可以成为Websockets客户端吗?
- 18. HTML5/Js客户端数据库
- 19. 我可以使用cakePHP开发Android,Iphone,Windows应用程序吗?
- 20. 我可以使用java开发iPhone应用程序吗?
- 21. Web应用程序是否可以打开客户端存在的pdf文件
- 22. 我可以从我的应用程序打开设置应用程序吗?
- 23. 我可以在iPhone中使用URL方案打开手机应用程序吗?
- 24. 我可以在Windows客户端应用程序中使用Mongo DB吗?
- 25. iPhone应用程序:可以通过应用程序设置语音消息吗?
- 26. 我可以根据我的iPhone应用程序订阅吗?
- 27. 通过WFC数据服务客户端应用程序删除数据
- 28. 我可以先开发mac/iphone/ipad应用程序吗?
- 29. DB2应用程序开发客户端
- 30. 在iPhone上的Flash CS5 - 开发客户端/服务器数据应用程序
谢谢柯克和Squeegy。我一定会使用Javascript桥梁,我想我可以通过使用键值存储(localStorage对象)来简化事情。 – 2010-04-01 11:45:50
我不知道这是否属实,但现在不是。请参阅下面的答案,使用db名称0000000000000001.db。我正在使用这种技术,以便javascript和obj-c可以读取/写入相同的sqlite3数据库,并且它可以工作。 – brianz 2014-06-13 23:42:11