我很难在我的程序中完全可视化'Cursor'功能。我有点得到它的想法,但任何人都可以详细解释它的功能吗?
By Cursor,我指的是Cursor
接口。
我不能简单地理解它与任何事物所扮演的角色。
http://developer.android.com/reference/android/database/Cursor.html
答案 0 :(得分:7)
从SQLite数据库上的查询返回Cursor对象。 它将返回查询返回的所有行。
假设您在数据库数据库中有一个名为names
的表,其配置如下:
_id _name
1 Space Ghost
2 Zorak
3 Moltar
4 Brak
如果您想从此表中获取所有数据并使用它,您可以这样做 像这样的东西:
public HashMap<Integer, String> getNames(){
HashMap<Integer, String> data = new HashMap<Integer, String>();
try{
SQLiteOpenHelper helper = new MyOpenDbHelper(context);
SQLiteDatabase db = helper.getReadableDatabase();
String selectQuery = "SELECT * FROM names";
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor != null && cursor.moveToFirst()){ //make sure you got results, and move to first row
do{
int mID = cursor.getInt(0); //column 0 for the current row
String mName = cursor.getString(1); //column 1 for the current row
data.put(mID, mName);
} while (cursor.moveToNext()); //move to next row in the query result
}
} catch (Exception ex) {
Log.e("MyApp", ex.getMessage());
} finally
{
if (cursor != null) {
cursor.close();
}
if (db != null) {
db.close();
}
}
return data;
}
通常你会创建自己的类来扩展SQLiteOpenHelper,因为:
public class MyOpenDbHelper extends SQLiteOpenHelper {
//........
}
答案 1 :(得分:2)
在计算机科学中,数据库游标是一种控制结构,可以遍历数据库中的记录。游标有助于后续处理以及遍历,例如检索,添加和删除数据库记录。遍历的数据库游标特性使游标类似于迭代器的编程语言概念。
来自Here
游标是一种允许您迭代集合中记录的工具。它有订单和当前记录的概念。
来自The documentation you pointed yourself
提供对数据库查询返回的结果集的随机读写访问。
因此,不要将Cursor
视为一种功能,而应将其视为从任何数据库以更有效的方式获取记录的手段。
答案 2 :(得分:1)
您是指这个Cursor用法吗?
public String databaseToString(){
String dbString = "";
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + TABLE_PRODUCTS + " WHERE 1";
//Cursor points to a location in your results
Cursor c = db.rawQuery(query, null);
//Move to the first row in your results
c.moveToFirst();