Android SQLite SELECT Query - PullRequest
       2

Android SQLite SELECT Query

21 голосов
/ 14 февраля 2012

Я взял 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")));

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

Ответы [ 5 ]

38 голосов
/ 14 февраля 2012

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

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

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

25 голосов
/ 12 апреля 2014

Это полный код для операторов выбора.

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();
13 голосов
/ 05 мая 2013

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

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

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

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

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

1 голос
/ 06 декабря 2013

Вот код ниже.

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

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

0 голосов
/ 02 января 2019
 public User searchUser(String name) {
    User u = new User();
    SQLiteDatabase db = this.getWritableDatabase(); //get the database that was created in this instance
    Cursor c = db.rawQuery("select * from " + TABLE_NAME_User+" where username =?", new String[]{name});
    if (c.moveToLast()) {
        u.setUsername(c.getString(1));
        u.setEmail(c.getString(1));
        u.setImgUrl(c.getString(2));
        u.setScoreEng(c.getString(3));
        u.setScoreFr(c.getString(4));
        u.setScoreSpan(c.getString(5));
        u.setScoreGer(c.getString(6));
        u.setLevelFr(c.getString(7));
        u.setLevelEng(c.getString(8));
        u.setLevelSpan(c.getString(9));
        u.setLevelGer(c.getString(10));
        return u;

    }else {
        Log.e("error not found", "user can't be found or database empty");
        return u;
    }

}

это мой код для выбора одного пользователя и только одного так что вы инициируете пустой объект вашего класса, то Вы называете свою доступную для записи базу данных используйте курсор на случай, если их много и вам нужен здесь у вас есть выбор Использование: 1-

   if (c.moveToLast()) { } //it return the last element in that cursor 

или использование: 2-

 if(c.moveToFirst()) {  } //return the first object in the cursor 

и не забывайте, если база данных пуста, вам придется иметь дело с этим, в моем случае я просто возвращаю пустой объект

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...