我调用SQLiteDatabase.query并获取一个Cursor.虽然我仍在迭代该游标,但是从同一个线程发出其他查询是否安全?
解决方法:
是.您可以在同一个线程中拥有多个未完成的查询,并可以独立访问每个游标.
我将以下代码添加到测试活动中,并按预期运行:
SQLiteDatabase connection = getApplicationContext().openOrCreateDatabase("foo.db", MODE_PRIVATE, null);
try {
connection.execSQL("drop table if exists person");
connection.execSQL("create table person (id integer, name string)");
ContentValues cv = new ContentValues();
cv.put("id", 1);
cv.put("name", "leo");
connection.insert("person", null, cv);
cv = new ContentValues();
cv.put("id", 2);
cv.put("name", "yui");
connection.insert("person", null, cv);
Cursor rs = connection.query("person", new String[] {"id", "name" }, null, null, null, null, null);
while(rs.moveToNext())
{
System.out.println("name = " + rs.getString(1));
System.out.println("id = " + rs.getString(0));
Cursor rs2 = connection.query("person", new String[] {"id", "name" }, null, null, null, null, null);
while (rs2.moveToNext()) {
System.out.println("name = " + rs2.getString(1));
System.out.println("id = " + rs2.getString(0));
}
}
} catch (Exception e) {
System.out.println("Exception " + e);
}
原文地址:https://codeday.me/bug/20190620/1249586.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。