Как получить результат запроса на выборку в Sqlite java android? - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу получить результат моего запроса в переменных, чтобы иметь возможность проверить правильность аутентификации. В простом sql он делает это с Resultset, но я понял, что в Sqlite вы должны использовать курсор. Но я не могу получить результат. Вот два примера того, что я уже попробовал:

    public boolean checkAuthentication(String login, String password){

        boolean check = false;

        SQLiteDatabase db = dbManager.getWritableDatabase();
        SQLiteStatement statement = db.compileStatement("SELECT * from Visiteur WHERE vis_login = ? and vis_mdp = ?");
        statement.bindString(1, login);
        statement.bindString(2, password);
        //statement.execute();
        return check;

    }

    public boolean checkAuthentication2(String login, String password){

        boolean check = false;
        String log = null;
        String pass = null;

        String sql = "SELECT * from Visiteur WHERE vis_login = ? and vis_mdp = ?";
        SQLiteStatement statement = db.compileStatement(sql);
        statement.bindString(1, login);
        statement.bindString(2, password);

        Cursor cursor = db.rawQuery(sql, null);

        while(cursor.moveToNext()){
            log =  cursor.getString(cursor.getColumnIndex("vis_login"));
            pass = cursor.getString(cursor.getColumnIndex("vis_mdp"));
            Log.d("WHILE", log);
        }
        cursor.close();
        statement.close();

        if(log != null && pass != null){
            check = true;
        }


        return check;

    }

Спасибо за ответы.

1 Ответ

0 голосов
/ 27 февраля 2020

Используйте метод rawQuery(), чтобы получить Cursor, который вам не нужно повторять. Просто проверьте, возвращается ли 1 строка, потому что это то, что вы хотите знать: если пользователь существует с указанными c login и password:

public boolean checkAuthentication(String login, String password){
    boolean check = false;
    String sql = "SELECT * from Visiteur WHERE vis_login = ? and vis_mdp = ?";
    SQLiteDatabase db = dbManager.getWritableDatabase();
    Cursor cursor = db.rawQuery(sql, new String[] {login, password});
    check = cursor.moveToFirst();
    cursor.close();
    db.close();
    return check;
}
...