android - 将 SQLite 数据库从 sdcard 导入到 android - 没有 Assets 文件夹

标签 android sqlite android-studio android-sqlite android-permissions

我正在尝试将我的 sqlite 数据库从 sdcard 或任何外部位置导入我的 Android 应用程序。我的应用程序需要数据库导入,这样数据库架构不会改变,但记录会根据导入的数据库发生变化。

(例如,我可能在给定时间导入具有 10 条记录的 DatabaseA,而另一次我可能导入具有 25 条记录的 DatabaseA。DatabaseA 始终从相同的外部位置导入)。

到目前为止我看到的使用 Assets 文件夹的导入方法没有帮助。我想导入指向外部位置的数据库。

最佳答案

我使用以下代码从 SD 卡导入我的数据库。

请注意:需要在应用程序中创建数据库文件夹才能成功导入数据库。

public void importDB() {

String dir=Environment.getExternalStorageDirectory().getAbsolutePath();
File sd = new File(dir);
File data = Environment.getDataDirectory();
FileChannel source = null;
FileChannel destination = null;
String backupDBPath = "/data/com.example.mine.move/databases/A.db";
String currentDBPath = "A.db";
File currentDB = new File(sd, currentDBPath);
File backupDB = new File(data, backupDBPath);
try {
    source = new FileInputStream(currentDB).getChannel();
    destination = new FileOutputStream(backupDB).getChannel();
    destination.transferFrom(source, 0, source.size());
    source.close();
    destination.close();
    Toast.makeText(this, "Please wait", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
    e.printStackTrace();
}

此外,添加以下权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果您的导入不成功,请降级您的 sdk 版本或包含运行时权限。

关于android - 将 SQLite 数据库从 sdcard 导入到 android - 没有 Assets 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38153146/

相关文章:

java - : Hand over points to GameOverActivity

android - 此 gradle 插件至少需要 Android Studio 3.0

android - 尝试将 SQLite 数据库从数据复制到 SD 卡

java - 单击按钮后如何加载下一组元素

android - 在android中将可见性设置为GONE后如何恢复布局

sqlite - XOJO从SQLite数据库中删除一条记录

android - 非 gradle 项目 Android Studio 0.4.5 中的 Gradle 警告

Android 模拟器从未完全启动

javascript - 使用 Javascript 的 Phonegap-Android-sqlite。如何连接?

android - 在 Android 上使用 SQLite 时,我必须使用 execSQL 来更新表达式吗?