Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 显示特定行的值_Android_Sqlite_Android Sqlite - Fatal编程技术网

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; } 您

我试图在android中显示特定行的值,以检查是否有特定更新。我能不能成功?但是由于返回类型是游标,我不知道如何获取它。所以请帮助我

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
如果可以执行移动,则返回true,否则返回false

光标可以为空且没有行,因此
movetoFirst
将返回false

更常见的用法之一是:-

while (cursor.moveToNext) {
    .... cursor action(s) here.
}
光标最初将定位在第一行之前,即其位置为-1,可以使用
moveToPosition(-1)
进行设置

光标的
getPosition
方法将检索当前位置,注意第一行是位置0

根据偏移量(哪列)访问行中的列,并使用光标的
get???
(其中???表示类型)方法从行/列中检索数据(还有其他get…方法,如上文所述的
getPosition
)。检索数据的方法有:-

  • getBlob
    (检索字节数组)
  • getDouble
  • getFloat
  • getInt
  • getLong
  • getShort
  • getString
所有参数都采用单个参数,即游标内列的偏移量(不一定是表中的偏移量)的整数

您可以在任何类型的数据(BLOB除外)上使用any。尝试在BLOB上使用any(除
getBlob
外)将导致异常

但是,结果可能会有所不同,例如,如果使用
get
,例如假设偏移量为0的列包含*rumplestilskin,则:-

  • cursor.getString(0)
    将返回rumplestiltskin
  • cursor.getDouble(0)
    将以双精度返回0
  • cursor.getInt(0)
    将以浮点形式返回0
简而言之,您应该使用适当的get方法,否则结果可能会混淆

硬编码列偏移量通常会导致问题,因此通常最好将列名与游标的
getColumnIndex
方法结合使用。这会将列名字符串作为参数并返回列的偏移量

将上述内容应用于问题:- 可能有用的代码(即检索数据)可以是:-

    Cursor csr = db.getData(myid);
    while (csr.moveToNext) {
         long id_of_the_row = csr.getLong(csr.getColumnIndex(yourDatabaseHelperClass.id));
    }
注意到:-

  • if(moveToFirst(myid)){..}
    可以认为更正确,但假设只有一行存在,则按照编码,bot moveToFirst和moveToNext会产生相同的结果
  • 假设id列是rowid的别名,则rowid存储为long,并应正确提取为long
  • yourDatabaseHelperClass.id将不正确,而是将其替换为扩展SQLiteOpenHelper的类(包含
    getData
    方法的类),它还假设变量
    id
    具有
    公共访问权限
可能有用或感兴趣的链接:-
    • (包括一些游标获取方法如何检索数据的示例)

您想返回什么??我想查看一行中每个字段的值以及特定的idlet me周一在办公室时尝试。周一在办公室时尝试。周一在办公室时尝试。不,我尝试了上面的一个,它成功了。无论如何,谢谢您欢迎使用用户8601021。很高兴帮助您。让我周一在办公室时尝试星期二我在办公室的时候。上面的答案要简单得多。但是谢谢你的回复
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));
    }