Android 显示特定行的值
我试图在android中显示特定行的值,以检查是否有特定更新。我能不能成功?但是由于返回类型是游标,我不知道如何获取它。所以请帮助我Android 显示特定行的值,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我试图在android中显示特定行的值,以检查是否有特定更新。我能不能成功?但是由于返回类型是游标,我不知道如何获取它。所以请帮助我 public Cursor getData(int id) { SQLiteDatabase db = this.getReadableDatabase(); Cursor res = db.rawQuery("select * from calls where id=" + id + "", null); return res; } 您
public Cursor getData(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from calls where id=" + id + "", null);
return res;
}
您可以按照以下代码进行操作:
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from calls where id=" + id + "", null);
if (res != null) {
res.moveToFirst();
}
String firstColumnValue = res.getString(0);
String secondColumnValue = res.getString(1);
并在检索值后关闭数据库:
db.close();
如果要通过列名称获取列值,请使用以下代码:
String value = res.getColumnIndex("column_name");
以字符串形式获取行值。然后返回字符串值
public String getData(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from calls where id=" + id + "", null);
if (res.getCount() > 0) {
res.moveToFirst();
String s = res.getString(res.getColumnIndex("id"));
return s;
}
试试这个
ArrayList<HashMap<String, String>> dataList = new ArrayList<>();
或
在db_类中
public ArrayList<HashMap<String, String>> getData(String id) {
ArrayList<HashMap<String, String>> returnArray = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from calls where id=" + id + "", null);
if (res != null && res.getCount() > 0) {
if (res.moveToLast()) {
do {
HashMap<String, String> getdatamap = new HashMap<String, String>();
getdatamap.put("KEY_ONE", res.getString(1));
getdatamap.put("KEY_TWO, res.getString(2));
returnArray.add(getdatamap);
}while (res.moveToPrevious());
}
}
res.close();
return returnArray;
}
public ArrayList getData(字符串id){
ArrayList returnArray=新的ArrayList();
SQLiteDatabase db=this.getReadableDatabase();
Cursor res=db.rawQuery(“从调用中选择*,其中id=“+id+”,null);
如果(res!=null&&res.getCount()>0){
if(res.moveToLast()){
做{
HashMap getdatamap=新HashMap();
getdatamap.put(“KEY_ONE”,res.getString(1));
put(“KEY_-TWO,res.getString(2));
returnArray.add(getdatamap);
}while(res.moveToPrevious());
}
}
res.close();
返回数组;
}
现在,您可以使用arraylist中的值来创建视图从光标检索数据时,需要考虑两个因素:行(光标内的位置)和列及其类型 要定位光标,请使用光标的
move
方法之一。这些方法包括:-
,它移动与其当前位置相关的光标move
moveToFirst
moveToLast
moveToNext
和移动位置
moveToPrevious
movetoFirst
将返回false
更常见的用法之一是:-
while (cursor.moveToNext) {
.... cursor action(s) here.
}
光标最初将定位在第一行之前,即其位置为-1,可以使用moveToPosition(-1)
进行设置
光标的getPosition
方法将检索当前位置,注意第一行是位置0
根据偏移量(哪列)访问行中的列,并使用光标的get???
(其中???表示类型)方法从行/列中检索数据(还有其他get…方法,如上文所述的getPosition
)。检索数据的方法有:-
(检索字节数组)getBlob
getDouble
getFloat
getInt
getLong
getShort
getString
getBlob
外)将导致异常
但是,结果可能会有所不同,例如,如果使用get
,例如假设偏移量为0的列包含*rumplestilskin,则:-
将返回rumplestiltskincursor.getString(0)
将以双精度返回0cursor.getDouble(0)
将以浮点形式返回0cursor.getInt(0)
getColumnIndex
方法结合使用。这会将列名字符串作为参数并返回列的偏移量
将上述内容应用于问题:-
可能有用的代码(即检索数据)可以是:-
Cursor csr = db.getData(myid);
while (csr.moveToNext) {
long id_of_the_row = csr.getLong(csr.getColumnIndex(yourDatabaseHelperClass.id));
}
注意到:-
可以认为更正确,但假设只有一行存在,则按照编码,bot moveToFirst和moveToNext会产生相同的结果if(moveToFirst(myid)){..}
- 假设id列是rowid的别名,则rowid存储为long,并应正确提取为long
- yourDatabaseHelperClass.id将不正确,而是将其替换为扩展SQLiteOpenHelper的类(包含
方法的类),它还假设变量getData
具有id
公共访问权限
-
- (包括一些游标获取方法如何检索数据的示例)
while (cursor.moveToNext) {
.... cursor action(s) here.
}
Cursor csr = db.getData(myid);
while (csr.moveToNext) {
long id_of_the_row = csr.getLong(csr.getColumnIndex(yourDatabaseHelperClass.id));
}