【问题标题】:How can i see my database file in android studio when connect with a real device?与真实设备连接时,如何在 android studio 中查看我的数据库文件?
【发布时间】:2016-09-30 05:34:37
【问题描述】:

我的数据文件夹在设备监视器中是空的。当我将 db 放入内部存储器时,我可以看到在 sdcard0 中,我可以访问该文件但不能写入超过一行。 〜我是android的新手〜。这是我的代码,

 public static final String Query="CREATE TABLE "+UserConstruct.newUserinfo.TableName+" ("+UserConstruct.newUserinfo.UserName+" TEXT, "+UserConstruct.newUserinfo.Password+" TEXT,"+
                UserConstruct.newUserinfo.FName+" TEXT, "+UserConstruct.newUserinfo.LName+" TEXT,"+UserConstruct.newUserinfo.ACode+" TEXT,"+UserConstruct.newUserinfo.AEmail+" TEXT);";



   public DatabaseHelper(Context context)
    {
        super(context,DatabaseName,null,DatabaseVersion);
        Log.e("Database operation","created or opened");

    }
    @Override
    public void onCreate(SQLiteDatabase db)
    {
        db.execSQL(Query);
        Log.e("Created","Table Created");
        File f=new File("/data/data/com.example.future.buildingmonitoringsystem/databases/ptl2_DB.db");
        FileInputStream fis=null;
        FileOutputStream fos=null;

        try
        {
            fis=new FileInputStream(f);
            fos=new FileOutputStream("/mnt/sdcard/ptl2_DB.db");
            while(true)
            {
                int i=fis.read();
                if(i!=-1)
                {fos.write(i);}
                else
                {break;}
            }
            fos.flush();


code for insertion in main class:
   String UserName="admin"
   Password = "password";
         String FName="abc";
         String LName="abc";
         String ACode="1234";
         String AEmail="sjn@gmail.com";
         String TableName="htl_portal_user";

        dbhelper=new DatabaseHelper(context);
        sqlitedatabase=dbhelper.getWritableDatabase();
        dbhelper.insert( UserName,Password,FName,LName,ACode,AEmail,sqlitedatabase);
        Toast.makeText(getBaseContext(),"Data inserted",Toast.LENGTH_LONG).show();
        dbhelper.close();

【问题讨论】:

  • 不能写超过 1 行?你的方法是什么?您尝试执行的代码在哪里?这很快就会被否决。
  • 你的设备root了吗?
  • 设备未植根。
  • 请将您的代码发布到您在数据库中插入数据的位置

标签: android sqlite android-studio file-io


【解决方案1】:

目前无法在 Android Studio 中查看您的数据库文件。您必须按照以下步骤操作:

1.以编程方式在您的应用中创建您的 Sqlite 数据库文件

2.将其导出到您的计算机 - 文件扩展名为 .sqlite

3.要打开此文件,您需要一个 mozilla 插件 - SQLite Manager - 将此插件添加到您的 mozilla 浏览器

4.现在,您可以在 SQlite 管理器中打开导出的文件 - 您甚至可以在 SQLite 管理器中执行许多数据库功能。

要在您的 android 设备中导出您的 db 文件,请遵循以下代码:

export.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                File f=new File("/data/data/YOUR_PACKAGE_NAME/databases/YOUR_DATABASE_NAME");
                FileInputStream fis=null;
                FileOutputStream fos=null;

                try
                {
                    fis=new FileInputStream(f);
                    fos=new FileOutputStream("/mnt/sdcard/DATABAASE_.db");
                    while(true)
                    {
                        int i=fis.read();
                        if(i!=-1)
                        {fos.write(i);}
                        else
                        {break;}
                    }
                    fos.flush();
                    Toast.makeText(getBaseContext(), "Database Export Successfully", Toast.LENGTH_LONG).show();

                }
                catch(Exception e)
                {
                    e.printStackTrace();
                    Toast.makeText(getBaseContext(), "DB dump ERROR", Toast.LENGTH_LONG).show();
                }
            }
        });

【讨论】:

  • 我已经完成了这个,我可以在我的 sdcard 中看到 db 文件。问题是,当我在插入第二行后尝试访问数据时,应用程序被挂起然后关闭。 [如果只有一行我可以访问它。]
【解决方案2】:

如果您使用的是 Real Device,则无法看到数据库。如果要查看数据库,则必须导出数据库。

导出数据库的代码在这里:

btnexport.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                File f=new File("/data/data/YOUR_PACKAGE_NAME/databases/YOUR_DATABASE_NAME");
                FileInputStream fis=null;
                FileOutputStream fos=null;

                try
                {
                    fis=new FileInputStream(f);
                    fos=new FileOutputStream("/mnt/sdcard/DATABAASE_.db");
                    while(true)
                    {
                        int i=fis.read();
                        if(i!=-1)
                        {fos.write(i);}
                        else
                        {break;}
                    }
                    fos.flush();
                    Toast.makeText(getBaseContext(), "Database Export Successfully", Toast.LENGTH_LONG).show();

                }
                catch(Exception e)
                {
                    e.printStackTrace();
                    Toast.makeText(getBaseContext(), "DB dump ERROR", Toast.LENGTH_LONG).show();
                }
            }
        });

【讨论】:

  • 完成此操作,现在我可以在我的 sdcard 中看到数据库。我可以写一行,也可以访问它。问题是插入第二行后无法访问数据库。当我尝试挂起该应用程序并停止时。
  • 代码已添加到我的问题中。
猜你喜欢
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
相关资源
最近更新 更多