Подтвердить что ты не робот

Android SQLite SELECT Query

Я взял значение 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")));

Но это не сработает. Какие-либо предложения?

4b9b3361

Ответ 1

Попробуйте обрезать строку, чтобы убедиться, что нет лишнего пробела:

Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE TRIM(name) = '"+name.trim()+"'", null);

Также используйте c.moveToFirst(), например, упомянутый @thinksteep.

Ответ 2

Это полный код для операторов 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();

Ответ 3

Попробуйте использовать следующий оператор:

Cursor c = db.rawQuery("SELECT * FROM tbl1 WHERE name = ?", new String[] {name});

Android требует, чтобы предложения WHERE сравнивались с?, и тогда вы указываете равное количество? во втором параметре запроса (где у вас есть нуль).

И как сказал Намбари, вы должны использовать c.moveToFirst(), а не c.moveToNext()

Кроме того, могут ли быть цитаты в имени? Это тоже может повредить.

Ответ 4

Вот приведенный ниже код.

String areaTyp = "SELECT " +AREA_TYPE + "  FROM "
            + AREA_TYPE_TABLE + " where `" + TYPE + "`="
            + id;

где id - это условие, на котором будет отображаться результат.