如何使用id sqlite获取行?

时间:2012-06-26 11:12:46

标签: java android sqlite android-sqlite

这是一个简单的!然而,我错过了一些东西。请帮帮我。 在这里,我试图通过id获取值,但不能这样做。即使在更改id的值后,它也会返回相同的值。

    db = openOrCreateDatabase("DBSOURCE", 0, null);
    Cursor cursorc = db.rawQuery("SELECT * FROM LIST WHERE ID="+id+"", null);
    cursorc.moveToFirst();

    int NameID = cursorc.getColumnIndex("Name");
    int mobilenumberID = cursorc.getColumnIndex("MoblieNumber");

    edName.setText(cursorc.getString(NameID));
    edMobNum.setText(cursorc.getString(mobilenumberID));

    cursorc.close();

    db.close();

5 个答案:

答案 0 :(得分:7)

1- 或者更好地使用参数化语句

String query = "SELECT COUNT(*) FROM " + tableName + " WHERE columnName = ?";
cursor = db.rawQuery(query, new String[] {comment});

2 - 如果使用conditon c.moveToFirst()或c.getCount()> 0或(!c.isAfterLast())

if (c.moveToFirst()){ 
    do{ 
       //if you not need the loop you can remove that
       id = c.getInt(c.getColumnIndex("_id"));
   }
 while(cursor.moveToNext());
}c.close(); 

答案 1 :(得分:5)

id列标题实际上是“ID”吗?或者是一个设置为“_id”的变量(Android数据库中主键的常用列名)?

如果是后者,则查询不正确,因为您使用“ID”作为文字列名称。尝试将其更改为:

Cursor cursorc = db.rawQuery("SELECT * FROM LIST WHERE " + ID + " = " + id, null); 

甚至是这样:

Cursor cursorc = db.rawQuery("SELECT * FROM LIST WHERE _id = " + id, null); 

答案 2 :(得分:2)

尝试这种方式

    Suppose long id=5;
    String[] col=new String[]{KEY_ROWID,KEY_NAME,KEY_ADDRESS};  // your column which data u want to retrive if id is same 
    Cursor c=db.query(DATABASE_TABLE, col, KEY_ROWID+"="+id,null, null, null, null);
    if(c!=null){
    c.moveToFirst();
    // get data here which u want accroding to ur requirement 
    }

答案 3 :(得分:1)

尝试使用

Cursor cursorc = db.rawQuery("select * from list where ID = ?", new String[] {id+""});

答案 4 :(得分:0)

试试这个

Cursor cursorc = db.rawQuery("SELECT * FROM LIST WHERE ID='"+id+"'", null);