4

我成功地将一些数据插入到我的 sqlite 数据库中(我通过打印出插入返回的长 ID 来确认这一点,并且它不是-1)所以我知道它在那里。问题是我正在使用 SQLite 数据库浏览器查看的 sqlite 数据库位于 assets 文件夹中(我用它来将其他表的已经组成的数据复制到 tablet 目录中) - 在这种情况下它是 /data/data/包名/文件/ -

平板电脑是摩托罗拉 xoom ICS(4.0.3),在 macbook pro 上开发。关于我可以用来查看数据的任何建议?

adb 程序位于 android-sdk-mac_x86/platform-tools 中,我执行以下命令:

./adb 外壳

  • 但我无处可去——只有许可问题。我看到有人建议使用 Firefox 插件,但……真的吗?那是最好的吗?在我看来,开发人员将有更好的途径来查看他们在数据库中的数据。如果您要将内容插入数据库,您希望能够查看内容,以防您稍后需要调试您的选择(作为一个非常好的示例)。

编辑:我也无法让 firefox 插件工作。似乎无法识别任何外部设备。

有任何想法吗?谢谢。

4

4 回答 4

1

我不确定它是否正是你所追求的,但你可以安装paw,一个 android webserver .. 然后安装 paw 的 php 插件,然后使用pdo查看数据(以及创建和修改数据)。如果您需要除编码(类似cli)界面之外的其他东西,一旦您完成了这个,您可以尝试类似这样的东西。

于 2012-03-22T05:35:55.767 回答
1

我有一个类似的问题 - 并决定在我的应用程序中放置一个按钮,单击该按钮将数据库复制到 SD 卡。然后,您可以使用 DDMS 将数据库从 SD 卡复制到连接的计算机,并启动您想要检查数据库、验证值等的任何内容。

package com.me.myPackage;

import java.io.File;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.content.Context;
import android.os.Environment;
import android.widget.Toast;

public class Utility {

public static void backupDatabase(Context context) throws IOException {

    // Open your local db as the input stream
    String inFileName = PATH_TO_YOUR_DB;
    File dbFile = new File(inFileName);
    FileInputStream fis = new FileInputStream(dbFile);

    File outputDirectory = new File(
            Environment.getExternalStorageDirectory() + "/PATH_FOR_BACKUP");
    outputDirectory.mkdirs();
    SimpleDateFormat sdf = new SimpleDateFormat(Constants.DATE_TIME_FORMAT_FOR_DATABASE_NAME); // append date time to db name

    String backupFileName = "/MyApp_" + sdf.format(new Date()) + ".db3"; 
    String outFileName = outputDirectory + backupFileName;

    // Open the empty db as the output stream
    OutputStream output = new FileOutputStream(outFileName);

    // transfer bytes from the inputfile to the outputfile
    byte[] buffer = new byte[1024];
    int length;
    while ((length = fis.read(buffer)) > 0) {
        output.write(buffer, 0, length);
    }
    // Close the streams
    output.flush();
    output.close();
    fis.close();

    Toast.makeText(context, "Database backup complete", Toast.LENGTH_LONG)
            .show();
}

}

于 2012-03-23T06:28:08.150 回答
0

一个完全不同的途径可能是查看使用 android sdk 的 sqlite 库,也许你可以通过 cli 使用它。

于 2012-03-22T05:36:52.223 回答
0

这是使用 adb 的答案:Examineing sqlite3 Databases from a Remote Shell

$ adb -s emulator-5554 shell
# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
SQLite version 3.3.12
Enter ".help" for instructions
.... enter commands, then quit...
sqlite> .exit 
于 2012-03-23T00:50:23.470 回答