【问题标题】:Android - SQLite database accessAndroid - SQLite 数据库访问
【发布时间】:2011-10-05 16:42:47
【问题描述】:

编辑:假设这篇文章的手机有根。

我删除了我之前发布的关于这个主题的一个问题,因为没有一个答案接近于回答这个问题。长话短说,我需要打开一个数据库并修改现有记录。我不想使用“帮助类”,因为我实际上想查看和理解几行代码中发生的事情,而不是包含 100 行代码的不必要的(出于我的目的)类。所以请不要告诉我“使用记事本教程”。我有,但它没有解释我需要什么。

为简化起见,我正在这样做:

SQLiteDatabase myDB = this.openOrCreateDatabase("/data/data/MY_APP/databases/settings.db", MODE_PRIVATE, null);
myDB.execSQL("INSERT INTO my_table (SOME_FIELD) VALUES ('SOME_VALUE');");

这很好用。但是,如果我尝试在不同的路径中打开/编辑数据库,它会失败。例如,我可能想编辑另一个应用程序使用的数据库。我怎样才能做到这一点?这是一个简单的权限问题吗?如果我的应用请求并获得 root 访问权限,它应该工作吗?

编辑:我可以在手机上安装大量应用程序,这些应用程序能够编辑系统上的每个数据库,因此显然可以做到这一点。

【问题讨论】:

  • “编辑系统上的每一个数据库”——你说的这些神奇的应用是什么?
  • @Merlin 你真的从未见过数据库编辑器应用程序吗? “SQLite 编辑器”已上市。它允许您在手机上打开、查看、编辑任何数据库。不过我怀疑它是魔法。
  • 除非它已经root,否则你在/data/data/some_other_app中看不到任何东西
  • 好吧,假设它已经扎根了......现在呢?我仍然无法使用我发布的代码。
  • 错误只是“无法打开数据库文件”。我可能会错误地请求 SU。我会在测试时报告...

标签: android sqlite


【解决方案1】:

关于安卓安全,您不能直接访问他人的应用数据库。如果其他应用程序创建 ContentProvider,那么您可以通过其 Providers 访问他们的 DB(如果存在)。否则,AFAIK 没有出路。

【讨论】:

  • 这显然是不准确的,否则市场上不会存在像“SQLite Editor”这样的应用程序。显然这是可能的。
  • xjaphx .this thing you are talking about internal DB but if the DB is in SDcard 那么我想我可以在其他应用程序中访问。
【解决方案2】:

我不知道你是否还在寻找这个答案。我也想做同样的事情,但真的找不到任何东西。我知道我需要使用 root 来完成这个过程,但同样找不到任何东西。我开始胡闹,只是尝试了很多随机的东西,最后找到了一种方法。

对我有用的简短版本是,您需要以 root 身份更改数据库的权限,直接访问它(而不是通过 sqlite 助手),做任何您想做的事情,然后将权限放回原处。我在我的博客上详细介绍了所有这些:

http://rratmansky.wordpress.com/?p=259&preview=true

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2015-09-07
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多