Ответ 1
Попробуйте обрезать строку, чтобы убедиться, что нет лишнего пробела:
Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE TRIM(name) = '"+name.trim()+"'", null);
Также используйте c.moveToFirst()
, например, упомянутый @thinksteep.
Я взял значение String
из EditText
и установил его внутри условия SELECT QUERY after WHERE
Как
TextView tv = (TextView) findViewById(R.id.textView3);
EditTextet2 et = (EditText) findViewById(R.id.editText1);
String name = et.getText().toString();
Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE name = '"+name+"'", null);
c.moveToNext();
tv.setText(c.getString(c.getColumnIndex("email")));
Но это не сработает. Какие-либо предложения?
Попробуйте обрезать строку, чтобы убедиться, что нет лишнего пробела:
Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE TRIM(name) = '"+name.trim()+"'", null);
Также используйте c.moveToFirst()
, например, упомянутый @thinksteep.
Это полный код для операторов select.
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery("SELECT column1,column2,column3 FROM table ", null);
if (c.moveToFirst()){
do {
// Passing values
String column1 = c.getString(0);
String column2 = c.getString(1);
String column3 = c.getString(2);
// Do something Here with values
} while(c.moveToNext());
}
c.close();
db.close();
Попробуйте использовать следующий оператор:
Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE name = ?", new String[] {name});
Android требует, чтобы предложения WHERE сравнивались с?, и тогда вы указываете равное количество? во втором параметре запроса (где у вас есть нуль).
И как сказал Намбари, вы должны использовать c.moveToFirst()
, а не c.moveToNext()
Кроме того, могут ли быть цитаты в имени? Это тоже может повредить.
Вот приведенный ниже код.
String areaTyp = "SELECT " +AREA_TYPE + " FROM "
+ AREA_TYPE_TABLE + " where `" + TYPE + "`="
+ id;
где id - это условие, на котором будет отображаться результат.