在物理设备上找不到 SQLite 数据库,在模拟器上工作

问题描述 投票:0回答:0

我正在开发一个使用 SQLite 数据库存储数据的 Android 应用程序。该应用程序在模拟器上运行良好,但是当我在物理设备(XAIOME NOTE 8)上测试它时,找不到在运行时读取的第一个表。

我检查了应用程序权限并全部授予,数据库文件正在保存到设备上的应用程序文件夹中。我正在使用以下代码将数据库从资产文件夹复制到应用程序文件夹:

        try {
            InputStream inputStream = context.getAssets().open(AppDataBase.db_NAME);
            String outfile = context.getDatabasePath(AppDataBase.db_NAME).getPath();
            OutputStream outputStream = new FileOutputStream(outfile);
            byte[] buft = new byte[1024];
            int length = 0;
            while ((length = inputStream.read(buft)) > 0) {
                outputStream.write(buft, 0, length);
            }
            outputStream.flush();
            outputStream.close();
            return true;
        } catch (Exception e) {
            return false;
        }

我也检查了数据库文件名和表名,都是正确的。我试过在线搜索解决方案,但没有找到任何有效的方法。

如有任何关于如何解决此问题的建议,我们将不胜感激。提前谢谢你。

部分代码出错:

    @SuppressLint("Range")
    public List<Articles_of_Article_Screen> getAllArtigos(){

        openDataBase();

        String SQL = "SELECT * FROM artigos ORDER by id";
        List<Articles_of_Article_Screen> list = new ArrayList<>();

        cursor = db.rawQuery(SQL,null);

        Articles_of_Article_Screen obj;

        if(cursor.moveToFirst()){

            do{
                obj = new Articles_of_Article_Screen(
                        cursor.getString(cursor.getColumnIndex("titulo")),
                        cursor.getString(cursor.getColumnIndex("previa")));

                list.add(obj);
            }while (cursor.moveToNext());

        }

        closeDataBase();

        return list;

    }

android sqlite android-sqlite
© www.soinside.com 2019 - 2024. All rights reserved.