如何向SELECT查询添加WHERE子句?

时间:2016-06-13 14:47:52

标签: android sql sqlite

如何编写SQL查询以在WHERE子句中使用整数选择行?

以下是我想要使用查询的代码段,但这不起作用(不返回任何结果)。

public Cursor forEditPurpose(int pos){

    db=this.getReadableDatabase();
   Cursor res =  db.rawQuery("SELECT name,phone FROM mecontact1 where _id = " + pos + "", null);

    return res;

}

这是我的整个数据库代码,我执行了我所需要的所有操作:

public class ContactDatabase extends SQLiteOpenHelper {
    SQLiteDatabase db;
    public static final String DATABASE_NAME="totalContact1.db";
    public static final  String TABLE_NAME="mecontact1";
    public static final  String NAME="name";
    public static final  String PHONE="phone";
    public static final  String UID="_id";


    public ContactDatabase(Context context) {
        super(context, DATABASE_NAME, null, 1);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL("create table mecontact1" +
                    "(_id integer primary key , name text, phone text)");
        }catch(android.database.SQLException e){
                System.out.println("table create nhi ho rha");
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS mecontact1");
        onCreate(db);
    }

    public void insertContact(String nam,String mob,int autocrement){

        db=this.getWritableDatabase();
        ContentValues contentValues=new ContentValues();

        contentValues.put(NAME,nam);
        contentValues.put(PHONE,mob);
        contentValues.put(UID,autocrement);

        db.insert(TABLE_NAME, null, contentValues);
        db.close();
    }

    public Cursor showData(){

        db=this.getReadableDatabase();
        Cursor res =  db.rawQuery("SELECT  * FROM mecontact1", null);
        return res;

    }

    public Cursor nameData(String dataName){

        db=this.getReadableDatabase();
        Cursor res =  db.rawQuery("SELECT * FROM mecontact1 WHERE name = '"+dataName+"'", null);
        return res;

    }

    public Cursor phoneData(String dataNumber){

        db=this.getReadableDatabase();
        Cursor res =  db.rawQuery("SELECT * FROM mecontact1 WHERE phone = '"+dataNumber+"'", null);
        return res;

    }

    public Cursor phoneName(){

        db=this.getReadableDatabase();
        Cursor res =  db.rawQuery("SELECT * FROM mecontact1 ", null);
        return res;

    }

    public void deleteContact(String d,int pos){
        db=this.getWritableDatabase();

        db.execSQL("DELETE FROM "+ TABLE_NAME + " WHERE " + UID + " = " + pos +"");
        db.execSQL("UPDATE " + TABLE_NAME + " set " + UID + " = (" + UID + "-1) where " + UID + " > " + String.valueOf(pos));

    }

    public Cursor forEditPurpose(int pos){

        db=this.getReadableDatabase();
       Cursor res =  db.rawQuery("SELECT name,phone FROM mecontact1 where _id = " + pos + "", null);

        return res;

    }
}

2 个答案:

答案 0 :(得分:0)

你可以试试;

  public Cursor forEditPurpose(int pos){

    db=this.getReadableDatabase();
    //don't forget the ? parameter in the selection
    Cursor res =  db.query(tableName,new String[]{"name","phone"},"_id =?",new String[]{""+pos},null,null,null);
    return res;

  }

答案 1 :(得分:0)

我假设您想要返回查询结果的光标,这是完整的示例,但在您的代码中,您可能缺少cursor.moveToFirst();

public Cursor getById(int _id){
    SQLiteDatabase db = this.getReadableDatabase();

    String selectQuery = "SELECT columns_to_return FROM table_name WHERE column_name = " + _id;
    Cursor c = db.rawQuery(selectQuery, null);
    c.moveToFirst();

    return c;
}

如果您需要进一步解释或帮助,请询问。