我需要从我手机的内存中打开一个数据库(/ 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对象中读取数据”
答案 0 :(得分:0)
我认为您无法将SQLDatabases写入外部。如果它是所有字符串或整数数据,您可以将数据库写入内部,然后编写一个函数,该函数将遍历表并连接数据并将其作为.txt写入外部。
是的,请阅读.openDatabase方法的文档。我认为第一个参数是寻找内容URI的路径部分,而不是ext内存文件路径。