我想检查在EditText中输入的用户名是否已存在于SQL数据库中。
为此创建一个包含EditText内容的新String。
user = nombreUsuario.getText().toString().trim();
创建一个方法来读取数据库的所有用户,并且游标的内容也传递一个String。
public String obtenerNombresDeUsuario() {
String lectura = "";
Cursor c = db.query(TABLA_BASEDATOS, new String[] {KEY_NOMBRE, }, null, null, null, null, null);
int nom = c.getColumnIndex(KEY_NOMBRE);
for (c.moveToFirst(); c.isAfterLast(); c.moveToNext()){
lectura = c.getString(nom) + '\n';
}
return lectura;
}
然后使用该方法。包含()以查看数据库名称是否已存在,但不起作用。
if (duplicado.contains(user)){
//Creamos el aviso
Toast aviso = Toast.makeText(getApplicationContext(), "El nombre de usuario ya existe, por favor seleccione un nombre de usuario distinto", Toast.LENGTH_LONG);
aviso.show();
}else{
//insertamos el nombre de usuario en la base de datos
db.insertarContacto(user, "0");
db.cerrar();
}
任何使其有效的建议
答案 0 :(得分:0)
for (c.moveToFirst(); c.isAfterLast(); c.moveToNext()){
我认为应该是
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
你只想要一个名字从这里回来吗?您正在循环,但每次都重置lectura值。 你可以使用
lecture += c.getString(nom) + '\n';
如果要有很多字符串,您可能需要使用字符串构建器。
public String obtenerNombresDeUsuario() {
Cursor c = db.query(TABLA_BASEDATOS, new String[] {KEY_NOMBRE, }, null, null, null, null, null);
int nom = c.getColumnIndex(KEY_NOMBRE);
StringBuilder lectura = new StringBuilder();
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
lectura.append(c.getString(nom) + '\n');
}
return lectura.toString();
}
您还可以使用sql
检查lectura是否存在public boolean lecturaExists(String lectura) {
Cursor c = db.query(TABLA_BASEDATOS, new String[] {KEY_NOMBRE, }, "lectura_name = ?", new String[]{lectura}, null, null, null);
int nom = c.getColumnIndex(KEY_NOMBRE);
boolean exists = c.moveToFirst();
c.close();
return exists ;
}