Как проверить наличие данных в таблице SQLite?

215
01 января 2019, 20:00

Есть форма регистрации и входа. Требуется, чтобы если пользователь регистриурует аккаунт с таким же email, ником или паролем, ему выдавало сообщение об ошибке (тостом) и не регестрировало аккаунт. Как проверить вхождение определенных данных в таблицу? Код вот:

public class RegistrationActivity extends AppCompatActivity implements 
View.OnClickListener{
    Button btnReg;
    EditText etName, etEmail, etPass1, etPass2;
    DBHelper dbHelper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_registration);
        Log.d("MyLogs", "Создали рег активити");
        btnReg = (Button) findViewById(R.id.btn_reg);
        btnReg.setOnClickListener(this);
        etName = (EditText) findViewById(R.id.et_name);
        etEmail = (EditText) findViewById(R.id.et_email);
        etPass1 = (EditText) findViewById(R.id.et_pass1);
        etPass2 = (EditText) findViewById(R.id.et_pass2);
        dbHelper = new DBHelper(this);
    }
    @Override
    public void onClick (View v){
        String name = etName.getText().toString();
        String email = etEmail.getText().toString();
        String pass1 = etPass1.getText().toString();
        String pass2 = etPass2.getText().toString();
        SQLiteDatabase database = dbHelper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();

        switch (v.getId()){
            case R.id.btn_reg:
                if (name.equals("") || email.equals("") || pass1.equals("") || pass2.equals("")) {
                    Log.d("MyLogs", "Пустые поля");
                    Toast toast = Toast.makeText(getApplicationContext(),
                            "Все поля должны быть заполнены!", Toast.LENGTH_SHORT);
                    toast.show();
                }
                else if (!pass1.equals(pass2)) {
                    Log.d("MyLogs", "Несовпадают пароли");
                    Toast toast = Toast.makeText(getApplicationContext(),
                            "Пароли должны совпадать!", Toast.LENGTH_SHORT);
                    toast.show();
                }
                else if (!email.contains("@")) {
                    Log.d("MyLogs", "Неверное мыло");
                    Toast toast = Toast.makeText(getApplicationContext(),
                            "Еmail неверный!", Toast.LENGTH_SHORT);
                    toast.show();
                }
                else { Log.d("MyLogs", "Добавляем акк");
                   contentValues.put(DBHelper.KEY_MAIL, email);
                   contentValues.put(DBHelper.KEY_NAME, name);
                   contentValues.put(DBHelper.KEY_PASS, pass1);
                   database.insert(DBHelper.TABLE_USERS, null, contentValues);
                    Log.d("MyLogs", "Уходим в main");
                   Intent intent = new Intent(this, MainActivity.class);
                   startActivity(intent);
                }
                break;
        }
        database.close();
    }
}

class DBHelper  extends SQLiteOpenHelper{
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "userDb";
    public static final String TABLE_USERS = "users";
    public static final String KEY_ID = "_id";
    public static final String KEY_NAME = "name";
    public static final String KEY_MAIL = "mail";
    public static final String KEY_PASS = "pass";
    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_USERS + "(" + KEY_ID
                + " integer primary key," + KEY_NAME + " text," + KEY_MAIL + " text" + KEY_PASS + "text" + ")");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists " + TABLE_USERS);
        onCreate(db);
    }
}
Answer 1

Проверка существования User'а по его email, упрощенный вариант.

Kotlin:

fun isUserExist(user: User): Boolean {
    val db = dbHelper.readableDatabase
        val cursor = db.rawQuery(
            "SELECT * FROM ${TABLE_USERS} WHERE ${KEY_MAIL}='$item.email'"
        ).toSqlQuery(), null)
        cursor.use {
            return it.moveToFirst()
        }
}
READ ALSO
Установка Android SDK (java.exe not found) при уже установленном JDK

Установка Android SDK (java.exe not found) при уже установленном JDK

Всем привет, Перед установкой Android SDK поставила JDKПроблема возникает при установке SDK, а именно:

230
Передать несколько фото на сервер Android

Передать несколько фото на сервер Android

В приложении использую rxjava2 retrofit 2Нужно передать фотографии сделаные в приложении на сервер(6 фото) в разные папки так что сделать одним запросом...

195
Как поменять каналы местами в TIF

Как поменять каналы местами в TIF

Есть tif с 6 каналамиДля его отображения берется растр и для него совместимый растр

219
Экспорт базы данных (mysql workbench)

Экспорт базы данных (mysql workbench)

Есть небольшой проект с базой данныхХочу закинуть его на GitHub

228