Android SQLite SELECT Boolean - PullRequest
       5

Android SQLite SELECT Boolean

0 голосов
/ 05 января 2020

У меня проблемы с выполнением запроса, я думаю, что проблема в структуре запроса, это класс для выбора

 public boolean buscarCONTACTO (int id, String nom, int tlf, String email){
            boolean result = false;
            String nombretaula ="contactos";
            SQLiteDatabase db = getReadableDatabase();
          try{
                String QUERY = "SELECT "+ id +","+ nom +","+ tlf +","+ email +" FROM " + nombretaula ;
                Cursor cursor = db.rawQuery(QUERY, null);
                if (cursor.moveToFirst()){
                    if(cursor.getString(0).equalsIgnoreCase("1")){
                        result = true;
                    }
                }
                db.close();
          }catch(Exception e ){

           e.printStackTrace();

            }
            return result;
        }

, чтобы проверить, находится ли он в базе данных, которая this (MainActivity) enter image description here enter image description here

Ответы [ 3 ]

0 голосов
/ 05 января 2020

Команда SELECT выглядит примерно так:

SELECT column2_name FROM table_name WHERE column1_name = column1_value

здесь вы передаете имена полей как значения вместо имени. Например, вы передаете значение id, а не его строку. Итак, ваш запрос станет примерно таким:

SELECT 1,afda,adada FROM asdasd

Ваш запрос должен выглядеть примерно так:

"SELECT nom FROM " + table_name + " WHERE id=" + id

0 голосов
/ 05 января 2020

Аргументы id, nom, tlf и email в методе buscarCONTACTO() являются целочисленными или строковыми литералами, но вы используете их в списке SELECT в качестве имен столбцов. Кроме того, этот метод проверяет только 1-й столбец 1-й строки, возвращенный из запроса. Если имена столбцов также id, nom, tlf и email и вы хотите проверить, существует ли в таблице строка с аргументами, которые вы передаете, сделайте следующее:

public boolean buscarCONTACTO(int id, String nom, int tlf, String email) {
    boolean result = false;
    String nombretaula ="contactos";
    SQLiteDatabase db = getReadableDatabase();
    try{
        String QUERY = "SELECT * FROM " + nombretaula + " WHERE id = ? AND nom = ? AND tlf = ? AND email = ?";
        Cursor cursor = db.rawQuery(QUERY, new String[] {String.valueOf(id), nom, String.valueOf(tlf), email});
        result = cursor.getCount() > 0;
        cursor.close();
    }catch(Exception e ){
        e.printStackTrace();
    }
    db.close();
    return result;
}

Полагаю, contactos - это имя таблицы.

0 голосов
/ 05 января 2020

Ваши + "id" + и + "tlf" + имеют значение Int, поэтому оберните его '', это решит вашу проблему.

String QUERY = "SELECT '"+ id +"',"+ nom +",'"+ tlf +"',"+ email +" FROM " + nombretaula ;

Happy Coding.

...