打开数据库Android

时间:2017-04-21 16:42:09

标签: android database sqlite

我需要从我手机的内存中打开一个数据库(/ storage / emulated / 0)并且我有“SQLiteCantOpenDatabaseException”要打开的数据库(由linux浏览器从linux创建)有表“android_metadata”和它们各自的字段(locale ... es_US)。

我需要从外部数据库打开并读取数据(应用程序需要从网站下载数据库并读取数据并将textview放入应用程序活动中)

该应用有权读取和写入外部存储器

下面的代码(只有获取数据库引用的按钮代码)

case R.id.button4:
            {
                int ID,IDn,IDa;
                String cabeceras[] ={"nombre","apellido",_ID},lectura=new String(),err="";
                ArrayList<String> arregloDatos = new ArrayList<>();

                try {
                    SQLiteDatabase db = SQLiteDatabase.openDatabase(Environment.getExternalStorageDirectory().getPath() +"/"+"pruebaDB.db", null, SQLiteDatabase.OPEN_READWRITE);

                    Cursor cursor = db.query("persona", cabeceras, null, null, null, null, null);


                    ID = cursor.getColumnIndex(_ID);
                    IDn = cursor.getColumnIndex("nombre");
                    IDa = cursor.getColumnIndex("apellido");

                    while (cursor.moveToNext()) {
                        lectura = cursor.getString(ID) + " " + cursor.getString(IDn) + " " + cursor.getString(IDa);
                        arregloDatos.add(lectura);

                    }

                    Intent i = new Intent(this, Main2Activity.class);
                    i.putStringArrayListExtra("cadena", arregloDatos);
                    startActivity(i);
                }catch (Exception g)
                    {
                        Toast msg =Toast.makeText(this,g.getClass().toString(),Toast.LENGTH_SHORT);
                        msg.show();
                    }

                break;
            }

编辑:我发现问题,问题是光标,因为我评论它并且应用程序没有显示任何异常。 现在......我的问题是“如何从SQliteDatabase对象中读取数据”

1 个答案:

答案 0 :(得分:0)

我认为您无法将SQLDatabases写入外部。如果它是所有字符串或整数数据,您可以将数据库写入内部,然后编写一个函数,该函数将遍历表并连接数据并将其作为.txt写入外部。

是的,请阅读.openDatabase方法的文档。我认为第一个参数是寻找内容URI的路径部分,而不是ext内存文件路径。

https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#openDatabase(java.lang.String,%20android.database.sqlite.SQLiteDatabase.CursorFactory,%20int,%20android.database.DatabaseErrorHandler)