【问题标题】:push database to rooted device将数据库推送到有根设备
【发布时间】:2011-12-05 18:14:39
【问题描述】:

我正在尝试访问设备上的 data/ 文件夹我无法打开它?..我已将手机植根,我想将我的数据库推送到设备上的数据库文件夹中,以便我可以运行我开发的应用程序,它在模拟器上运行良好,但我想在真实设备上测试它并且它没有获取数据库。

我使用 SQLite 管理器创建了包含记录的数据库,然后在模拟器上使用 DDMS 推送它。我尝试使用代码插入记录,但每当应用程序启动时,它会一直插入相同的记录,有没有办法只插入一次这些记录?

这是我在 DBHelper 类中的插入代码:

public void inserttable1Contact(String a, String b){

                ContentValues initialValues = new ContentValues();
                initialValues.put(KEY_a, a);
                initialValues.put(KEY_b, b);
                 db.insert(DATABASE_TABLE1, null, initialValues);}

然后我在我的主类中调用它:

 db.inserttable1Contact("aa", "bb");

我进行了大量搜索,但找不到任何有用的答案。 请任何帮助,它非常紧急。

感谢

【问题讨论】:

  • 到底有什么问题?您的应用是看不到数据库还是看到它但一遍又一遍地插入初始数据?
  • 不调用插入方法(已经使用sqlite管理器插入记录,如我所说),它不起作用我无法将它推送到我设备中的数据文件夹,然后尝试创建一个空数据库并调用 insert 方法,但它会在应用程序运行时不断插入

标签: android database insert push


【解决方案1】:

通常您会在 SQLiteOpenHelper 中覆盖 onCreate 以插入初始数据。由于您是通过旁加载来创建数据库,因此我建议使用某种持久存储(例如,共享首选项或数据库中单独的单行表)来保存一个标志,表明数据库已用数据初始化。如果未设置该标志(并设置标志),则仅调用inserttable1Contact

【讨论】:

  • 所以没有办法将我电脑上的数据库直接推送到我的设备上?
  • @Ama - 我以为我只是描述了一个。您需要确保将 db 文件推送到正确的位置。此外,db 结构需要完全正确(每个表都需要一个_id INTEGER PRIMARY KEY 列;如果您正常打开它,它还需要一个android_metadata 表)。例如,请参阅this article
  • 问题是我无法访问确切的位置,我植根了我的设备,但仍将其复制到 data/data/package/database 文件夹,是的,我有 android_metadata 表,每个表都有一个 _id PK专栏。我尝试使用 File Expert 应用程序访问,我可以访问该位置(仅当 USB 连接时)但我无法将数据库复制到该位置
  • @Ama - 听起来本地存储和 USB 连接之间存在交互。您的 USB 大容量存储设置是什么? (请参阅`应用程序 > 设置 > SD 卡和手机存储 > USB 连接模式`)
  • @Ama - 出于测试目的,您可以将数据库与您的应用程序打包在一起吗?然后在第一次运行时,应用程序可以将其复制到正确的数据库位置,如 here 所述。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
  • 2018-04-08
相关资源
最近更新 更多