从在线数据库同步后从 android 应用程序获取 sqlite 数据库

Posted

技术标签:

【中文标题】从在线数据库同步后从 android 应用程序获取 sqlite 数据库【英文标题】:Get sqlite database from android app after sync from online database 【发布时间】:2017-02-02 03:48:52 【问题描述】:

我有一个带有预置数据库的安卓应用程序,我可以破解预置数据,但是在与在线服务器同步后,我仍然得到旧数据库。我认为新数据存储在内存中,而不是写入存储在资产中的数据库。 如何获取实时 sqlite 数据库,同步后应用当前正在使用。

【问题讨论】:

到目前为止,您尝试了什么?如何提问***.com/help/how-to-ask 您的意思是从当前正在使用的设备中提取数据库? 是的,我可以提取在构建应用程序期间放置的旧数据库,但如果我想获取最新的同步数据,我无法获取 @gopal_patil 在您的问题中使用代码 sn-ps 更新您的同步过程。 我已经反编译了应用程序,所以他们的同步活动是使用一些 ncryption 来获取数据,获取数据的唯一方法是在插入 sqlite 之后 【参考方案1】:

比较新旧数据库中可能发生变化的所有对象。删除不存在的记录,插入新记录。

或者只是删除旧数据库,然后下载新数据库作为替换。

【讨论】:

感谢您的回复,但我已经反编译了应用程序,因此无法更改代码,只能以某种方式从内存中获取 sqlite【参考方案2】:

通过拉取该文件,您将无法获取新数据。 你可以试试这个,它会读取你的数据并从中创建新文件。

public boolean backUpDB() 
        String currentDBPath = ""; //db path
                + "DB_NAME";
        File data = Environment.getDataDirectory();

        if (isExternalStorageAvailable()) 
            File folder;
            folder = new File(
                    context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)
                            + "/backup_path/");
            if (!folder.exists()) 
                folder.mkdir();
            
            String path = folder + "";

            File SDPath = new File(path);
            if (!SDPath.exists()) 
                SDPath.mkdir();
            
            try 
                File currentDB = new File(data, currentDBPath);
                InputStream input = new FileInputStream(currentDB);
                byte dataa[] = new byte[input.available()];
                input.read(dataa);

                OutputStream out = new FileOutputStream(path + "/"
                        + "DB_NAME");
                out.write(dataa);
                out.flush();
                out.close();
                input.close();
             catch (Exception e) 
                Commons.printException("exception," + e + "");
                return false;
            
            return true;
         else 
            return false;
        

    

【讨论】:

以上是关于从在线数据库同步后从 android 应用程序获取 sqlite 数据库的主要内容,如果未能解决你的问题,请参考以下文章

清除数据后从共享偏好中获取价值

从 android 应用程序共享后从 google plus 注销

我希望我的Android应用程序将数据同步到MYSQL以用于我的在线ERP

在 Android 中从服务器数据库获取数据到 Sqlite 数据库

agg 后从数据帧中获取结果值

DNS 主从同步配置