如何保存另一个android应用程序的sqlite db文件。

时间:2014-03-10 11:16:32

标签: java android android-sqlite axis2

我在公司开发了销售人员的应用程序。他们中的大多数在农村地区进行销售,而且更多时候没有信号通知这些地区。然后他们告诉我们他们将销售与服务器同步。但是更多的销售细节丢失了。 然后我尝试开发工具作为我的应用程序的第三方工具将本地数据库文件保存到手机内存。然后我们可以通过电子邮件获取它。这是代码

    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();
        Toast.makeText(getApplicationContext(), "SD Card Detecting ", Toast.LENGTH_SHORT).show();
        if (sd.canWrite()) {
            Toast.makeText(getApplicationContext(), "Backup is writing to SD card", Toast.LENGTH_SHORT).show();
            String currentDBPath = "//data//com.lk.lankabell.android.activity//databases//TSRDBNEW";
            String backupDBPath = "TSRDBNEW-Backup";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB).getChannel();
                FileChannel dst = new FileOutputStream(backupDB).getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
                Toast.makeText(getApplicationContext(), "Backup is successful to SD card", Toast.LENGTH_SHORT).show();
            }
        }
    } catch (Exception e) {
        Toast.makeText(getApplicationContext(), "Backup is un-success to SD card", Toast.LENGTH_SHORT).show();
    }

我使用了我的主应用程序[ android + ksoap + axis2 ]技术。

请建议我实施this.i尝试上面的代码。但它没有工作。也需要SD卡。我的数据库网址有问题。?

enter image description here

1 个答案:

答案 0 :(得分:1)

您无法轻松地从任何应用的数据“私人”文件夹中“获取”文件。最好的方法是,当您从类创建/更新/删除数据库时,创建一个新查询来获取所需信息,将其保存为String,然后将sdcard保存在txt文件或json文件中,或者你想要的某种格式。它可能是一种可能的解决方案(没有DB模型不能做更多)使用CSV格式:

public void generateTXTOnSD(String[] lines_txt) 
{
    // lines_txt contains an array of each register in CSV format.
    try
    {
        File root = new File(Environment.getExternalStorageDirectory(),"NameOfDirectoryYouWantToSave");
        if (!root.exists()) 
        {
            root.mkdirs();
        }
        Calendar cal = Calendar.getInstance();
        // I made this to no override early versions of data I have stored.
        String hour= String.valueOf(cal.get(cal.HOUR_OF_DAY))+"_"+String.valueOf(cal.get(cal.MINUTE))+"_"+String.valueOf(cal.get(cal.SECOND));
        File txtfile = new File(root, name_txt+hour+".txt");
        FileWriter writer = new FileWriter(txtfile);
        //Every line contain the info you want to save
        for (String line_txt : lines_txt) {
            writer.append(line_txt);
            writer.append('\r');
            writer.append('\n');

        }
        writer.flush();
        writer.close();


    }
    catch(IOException e)
    {
        // ERROR

    }
} 

希望这有帮助。