当前位置: 首页 > 知识库问答 >
问题:

Android:wal存在时执行数据更新后复制db文件不工作

桓智敏
2023-03-14

我有一个有备份和还原功能的应用程序。单击备份按钮会将db文件复制到外部存储。单击restore按钮将从外部存储中取出文件(如果存在的话)并将其复制到应用程序中,用备份db文件覆盖现有db。

我在对表执行更新时遇到过这个问题。使用数据更新表后,具有更新数据的数据库将不会复制到外部存储中,或者,如果我在进行更新后尝试还原,则文件不会复制。

public void saveItem(int ItemID, int ItemNumber, String itemnote) 

{

        ContentValues args = new ContentValues();
        args.put("ItemNote", itemnote);
    mDb.update("Items", args, "ItemID =" + Item+" and ItemNumber ="+ItemNumber, null);

我正在使用下面的代码将db备份导入到应用程序中。同样,在执行update语句之前,这一切都起作用。提前道谢。

ImportDB.SetonClickListener(新建View.onClickListener(){public void onClick(View arg0){

            final File DATA_DIRECTORY_DATABASE = getDatabasePath("MyDB");

            final File DATABASE_DIRECTORY = new File(Environment.getExternalStorageDirectory(),"/MyApp");
            final File IMPORT_FILE = new File(DATABASE_DIRECTORY,"MyDB");

            File exportFile = DATA_DIRECTORY_DATABASE;

            File importFile = IMPORT_FILE;


            try {
                exportFile.createNewFile();
                copyFile(importFile, exportFile);
                Log.i("Import", "Succesfull");

            } catch (IOException e) {
                e.printStackTrace();

            }       




        }

    });

private static void copyFile(File src, File dst) throws IOException {
    FileChannel inChannel = new FileInputStream(src).getChannel();
    FileChannel outChannel = new FileOutputStream(dst).getChannel();
    try {
        inChannel.transferTo(0, inChannel.size(), outChannel);
    } finally {
        if (inChannel != null)
            inChannel.close();
        if (outChannel != null)
            outChannel.close();
    }
}

共有1个答案

孟凯泽
2023-03-14

我认为数据库版本没有改变,这就是为什么代码不能正常工作。

 类似资料:
  • 我阅读了发行说明,找到了关于嵌入式数据库检测的部分:https://github.com/spring-projects/spring-boot/wiki/spring-boot-2.4-release-notes#embedded-database-detection 但加上 对财产也没有帮助。 你能给我一个提示吗,是什么导致了这个问题? 亲切的问候,乌尔里希

  • 我有一个问题,而更新数据到laravel数据库。通常情况下,数据通过存储功能(POST请求)插入到数据库中。但是更新POST请求不会对数据库进行更新。我的密码是 routes.php 定制etail.php 控制器CustomerDetailController。php 当我发出存储为的后请求时,数据会被插入 带输出 但是当我尝试用PUT或PATCH请求更新相同的数据时 输入 我得到JSON响应作

  • 我不明白为什么不更新我的对象。在另一个组件中,我通过调度更新状态。在此情况下(在下面的代码中),mapStateToProps类别中的代码正在更改(控制台日志显示另一个类别)。但组件并没有重播,虽然在组件中我使用了道具。类别。事件控制台。登录元素未运行 我认为,如果我更新状态,则根据该状态更新组件。它应该如何工作?它应该如何工作?它可能很有用,添加类别的项不是父项或子项,而是邻居 谢谢你解决问题。

  • 我试图在linux中从systemd服务启动一个jar。我正在执行的jar假设在当前目录中有一个xml文件。我正在传递该文件的名称,并带有-config参数。我创建的示例服务如下: <代码>[单元]描述=我的服务后=网络。目标 上面的服务文件位于/usr/lib/systemd/system目录中,称为myservice。服务我正在执行以下命令来启动它: systemctl守护程序重新加载syst

  • UserViewModel: 用户存储库:

  • 我尝试用php(symfony应用程序)配置docker。 当我第一次构建容器时,symfony骨架应用程序出现在容器中,但任何其他构建都不会改变容器中的任何内容。 DOCKEFILE