【问题标题】:Viewing SQLite data on an Android tablet - SQLite Database Browser在 Android 平板电脑上查看 SQLite 数据 - SQLite 数据库浏览器
【发布时间】:2012-03-22 05:04:33
【问题描述】:

我成功地将一些数据插入到我的 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 插件工作。似乎无法识别任何外部设备。

有什么想法吗?谢谢。

【问题讨论】:

    标签: android macos sqlite xoom


    【解决方案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();
    }
    

    }

    【讨论】:

      【解决方案2】:

      我不确定它是否正是你所追求的,但你可以安装paw,一个android webserver..然后安装paw的php插件,然后使用pdo查看数据(以及创建并修改数据)。 完成此操作后,如果您需要编码(类 cli)接口以外的其他内容,您可以尝试类似 this 的内容。

      【讨论】:

      • 是的,这对于我想做的事情来说太过分了。我正在做一个关于在平板电脑上管理 sqlite 数据库的演示,但如果你甚至不能向他们展示数据库插入的结果,那么这意味着你必须相信你插入的内容是正确的,而不能用 SQLite 之类的东西直观地看到它数据浏览器。正如我提到的那样,作为一名开发人员,您应该如何调试代码以确保插入正确的信息?唯一的其他选择是编写一个循环来打印结果。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        这是使用 adb 的答案:Examining 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 
        

        【讨论】:

        • 是的,但我没有使用模拟器......这应该如何工作?不是说不会,但我只是没有“看到”它。
        猜你喜欢
        • 2014-03-13
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        • 1970-01-01
        • 2019-05-19
        • 2018-03-14
        • 2013-10-31
        • 1970-01-01
        相关资源
        最近更新 更多