【问题标题】:Where shall I put an existing DB in a android project [duplicate]我应该在哪里将现有数据库放在android项目中[重复]
【发布时间】:2016-11-22 12:44:35
【问题描述】:

我正在制作一个应用程序,并希望将其移植到我刚接触的 android。我应该把数据库放在哪里?下面的代码是否足以成功连接和查询数据库,还是我需要更多来测试它是否有效?

 String path = "WHERE_SHOULD_I_PLACE_MY_DB_?";

SQLiteDatabase sqLiteDatabase = SQLiteDatabase.openDatabase(path, null,     
SQLiteDatabase.OPEN_READONLY);

            Cursor cursor = sqLiteDatabase.rawQuery("select * from table", null);

            String something = cursor.getString(1);

            System.out.println(something);

【问题讨论】:

标签: android


【解决方案1】:

我从来没有做过类似的事情,但是如果我理解你的问题,你有一个 db,我建议你把它放在你的 android 项目的 assets 文件夹中,然后将它移动到应用程序的内部 sd 卡.通常有一个 /app_internal_sd_card/databases/some_db.db 存储它们,但是由于您不是自己创建的,因此不能立即将其放在那里。

您可能可以直接从资产中读取,但我认为这是一种不好的做法。 :)

关于从资产中读取的一些信息:read file from assets 要么 How to copy files from 'assets' folder to sdcard?

【讨论】:

  • 好的,所以尝试从头开始创建表,与普通 java 中的 sqlite 相比,这太混乱了。稍后当我弄清楚如何插入某些内容并查询回来时,我会回到这一点。这在java中是如此的无痛:P
  • 但是,如果您从头开始创建表格,则无需移动它,然后只需按照有关设置的教程进行操作即可。 :) 我的回答是只有在您要重用旧数据库的情况下。例如这里:developer.android.com/training/basics/data-storage/…
  • 所以我从头开始设置一个表来进行测试。现在我搞砸了,我在查询时得到了错误的信息。当我得到的只是一个数字时,我什至怎么知道表中存储了多少条记录?如何进入启动应用程序时创建的数据库?我必须从模拟器中访问它还是可以在我使用的 IntelliJ 中访问它?
【解决方案2】:

Android 有用于 SQL lite 的 API,只需使用它,它就会将 db 放到正确的位置:

就像您保存在设备内部存储中的文件一样, Android 将您的数据库存储在关联的私有磁盘空间中 应用。您的数据是安全的,因为默认情况下该区域不 其他应用程序可以访问。

https://developer.android.com/training/basics/data-storage/databases.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2022-09-29
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多