检查在EditText中输入的用户名是否已存在于SQL数据库中。 - Android

时间:2013-06-23 23:51:58

标签: android sql

我想检查在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();
}

任何使其有效的建议

1 个答案:

答案 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 ;
}