如何在没有root的情况下访问Android应用程序上的数据库

我正在开发一个包含 100 个元素的数据库的小型应用程序。我导入了数据库,但只有一个模拟器(我拥有的 3 个女巫)运行正常。我发现它运行没有问题,因为“Songs.db”数据库存在于 data/data/myapppackage/databases/ 文件夹中,如果不对设备进行 root,我将无法访问。


我通过互联网搜索解决此问题的不同方法和解决方案,但没有任何效果。我是 android 编程的新手,对于这种问题,没有任何教程。


public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME = "Songs.db";

    public static final String TABLE_NAME = "songs_table";

    public static final String COL_1 = "ID";

    public static final String COL_2 = "TITLE";


    public DatabaseHelper (Context context) {

        super( context, DATABASE_NAME, null, 1 );

        SQLiteDatabase db = this.getWritableDatabase();

    }


    public Cursor getData(int id) {

        SQLiteDatabase db = this.getReadableDatabase();

        Cursor res =  db.rawQuery( "select TITLE from songs_table where ID="+id+"", null );

        return res;

    }

}


和 PlayerTurn 类


myDb = new DatabaseHelper( this );

Cursor rs = db.getData( b );

rs.moveToFirst();

tit = rs.getString( rs.getColumnIndex( db.COL_2 ) );

我大多数时候收到的错误消息是android.database.sqlite.SQLiteException: no such table: songs_table (code 1): 谁能帮帮我?我花了将近 15 个小时...


湖上湖
浏览 146回答 1
1回答

拉莫斯之舞

您可以将数据库复制到 SD 卡中,您可以随时从 SD 卡访问数据库试试这个代码: try {    File sd = Environment.getExternalStorageDirectory();    File data = Environment.getDataDirectory();    if (sd.canWrite()) {        String currentDBPath = "data/"+sPackageName+"/databases/"+sDBName;        String backupDBPath = "/.appname-external-data-cache/"+sDBName; //"{database name}";        File dir = new File(sd,backupDBPath.replace(sDBName,""));        if(dir.mkdir()) {        }        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();        }    }    } catch (Exception e) {}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java