如何编写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;
}
}
答案 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;
}
如果您需要进一步解释或帮助,请询问。