繁体   English   中英

将数据库数据从一个Android设备传输到另一个

[英]Transfer database data from one android device to another

我有一个需要实现“共享”选项的应用程序,以将设备本地数据库中包含的数据传输到另一台设备,该设备可以在其中获取这些数据并将其插入到设备数据库中的相应表中。

我正在通过蓝牙进行通信,我只是在寻找一种传输数据的好方法。 是否有一种简单的方法可以在设备A上执行sqlite转储,使用蓝牙将其传输到设备B,然后让设备B重新插入此数据?

实现ContentProvider是利用Android框架对数据库进行CRUD操作的方式。

一个好的方法是将一行转换为Json并在接收方解包该字符串以插入它。 这种方法更具可测试性,更易于从发送过程中的错误中恢复,但根据数据的大小,它可能会非常缓慢。 为了加快速度,我将分批发送多行并进行测试,以查看哪种批处理大小最适合于速度和可靠性。

一种快速的方法可能是将数据转储到平面文件,然后使用FileProvider以URI的形式提供对该文件的访问,然后尝试从此处进行以下操作

    public void sendFile(Uri uri, BluetoothSocket bs) throws IOException {
            BufferedInputStream bis = new BufferedInputStream(getContentResolver().openInputStream(uri));
            OutputStream os = bs.getOutputStream();
        try {
            int bufferSize = 1024;
        byte[] buffer = new byte[bufferSize];

        // we need to know how may bytes were read to write them to the byteBuffer
        int len = 0;
        while ((len = bis.read(buffer)) != -1) {
            os.write(buffer, 0, len);
        }
    } finally {
        bis.close();
        os.flush();
        os.close();
        bs.close();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM