android:通过usb以编程方式将sqlite数据库从pc传输到设备

时间:2010-09-26 19:54:15

标签: android vb.net usb adb

情况就是这样。我有一个用vb.net编写的应用程序。它由两部分组成。一台在PC上,另一台在手持式Windows Mobile 6设备上。桌面程序通过USB使用activesync将SQLServer压缩数据库传输到手持设备和从手持设备传输。我们可能希望研究此应用程序也支持Android手持设备。现在我知道我可以将SQLite与.net一起使用。我知道我可以使用ADB将数据(以及数据库文件)推送到设备或从设备中提取数据。

我需要知道的是,我可以直接从VB.NET访问ADB作为API或SDK,而不必手动操作。

除非我遗漏了某些内容,否则我可以通过其他方式将数据库复制到设备或从设备复制数据库?

感谢期待

2 个答案:

答案 0 :(得分:3)

没有直接的API。我们有一个类似的场景,用户从桌面客户端(在我们的案例中基于Java Swing)同步内容(即数据库),它手动使用adb并且到目前为止工作正常。

在我们的Java客户端中,我们称之为:

private static final String ADB_PUSH = "\"" + Utility.getWorkDir() + File.separator + "adb\" -s %s push \"%s\" %s";


/**
 * Pushes a file to a connected device via ADB
 * @param deviceId Device serial number
 * @param from Path of source file (on PC)
 * @param to Path of file destination (on device)
 */
public static void push(String deviceId, String from, String to) {
    try {
        String cmd = String.format(ADB_PUSH, deviceId, from, to);
        System.out.println("adb push: " + cmd);
        Process p = Runtime.getRuntime().exec(cmd);
        InputStream is = p.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);

        String line;
        while ((line = br.readLine()) != null) {
            System.out.println("adb: " + line);
        }
    } catch (IOException e) {
        System.out.println(e);
    }
}

答案 1 :(得分:0)

我认为VB.Net应用程序将数据库移动到手机的更简单方法是将sqlite文件写入或复制到挂载的电话卷上的(可配置)目录(例如手机的SD卡。

Android应用程序可以使用SQLiteDatabase.openDatabase之类的方法,使用相同的路径打开并使用传输的数据库。