如何使用sqlite在koltin中创建登录名。
用户注册
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()
}
}
答案 0 :(得分:2)
{% if data.number|add:0 == iteration|add:"1" %}
是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() )
有错字。