Как создать логин kotlin с помощью sqlite? - PullRequest
1 голос
/ 09 июля 2020

как я могу создать логин в koltin с помощью sqlite.

Регистрация пользователя

 bt_204.setOnClickListener {
            val admin = AdminSQliteOpenHelper(this, "administracion",null,1)
            val bd = admin.writableDatabase
            val registro = ContentValues()
            registro.put("nombre_usuario", et_nombre_201.text.toString())
            registro.put("clave1", et_pasword_204.text.toString())
            registro.put("clave2",et_paword_203.text.toString() )
            bd.insert("usuario", null , registro)
            bd.close()
            et_nombre_201.setText("")
            et_paword_203.setText("")
            et_pasword_204.setText("")
            Toast.makeText(this,"Usuarios registrado correctamente", Toast.LENGTH_SHORT).show()
            val intent = Intent (this,MainActivity::class.java)
            startActivity(intent)
        }

основное действие

попробуйте это, но приложение уничтожено (я новичок)

   bt_ingresar_04.setOnClickListener {
            val admin = AdminSQliteOpenHelper(this, "administracion", null, 1)
            val bd = admin.writableDatabase
            val fila = bd.rawQuery(
                "select nombre_usuario,clave1 from usuario where nombre_usuario=${et_02.text} &&    ${etp_03.text}"
                null
            )
            if (fila.moveToFirst()) {
                val intent = Intent(this, MainActivity_03::class.java)
                startActivity(intent)
            } else {
                Toast.makeText(this, "Usuario no registrado", Toast.LENGTH_SHORT).show()
            }

        }

1 Ответ

2 голосов
/ 09 июля 2020

&& - логический оператор для Java, но не для sql. Вы должны использовать AND.

Также в предложении where запроса вы должны указать все необходимые имена столбцов, но вы этого не делаете. Вы указываете только столбец nombre_usuario.

Также параметры et_02.text и etp_03.text должны быть правильно заключены в кавычки, поэтому конечный результат будет примерно таким:

where column1 = 'value1' and column2 = 'value2'

Но правильный способ сделать это - использовать ? placholders и передайте параметры во втором аргументе rawQuery() в виде массива строк.

Так что измените на это:

val fila = bd.rawQuery(
    "select nombre_usuario, clave1 from usuario where nombre_usuario = ? and column_password = ?",
    arrayOf(et_02.text, etp_03.text)
)

Замените column_password именем столбца, в котором вы храните пароль.

Также, в bt_204.setOnClickListener, в этой строке:

registro.put("clave2",et_paword_203.text.toString() )

, возможно, есть опечатка для et_paword_203.

...