注册并登录不工作

时间:2016-03-06 08:59:56

标签: android

我正在进行Android应用程序开发和登录模块的工作现在我正在尝试注册,如果用户名已经存在,它会显示一条消息,用户名已经存在且用户应该登录。

我的代码 //注册

    public void addButtonClicked(View view) {
    LogIn ln = new LogIn(username.getText().toString(), password.getText().toString());

    dbHandler.addUser(ln);
    printDatabase();
    Toast.makeText(this, "Saved", Toast.LENGTH_LONG).show();
    boolean r = dbHandler.CheckIsDataAlreadyInDBorNot(username.getText().toString());
    if (r) {
        Toast.makeText(this, "Username already exists", Toast.LENGTH_LONG).show();
    }
}

//登录时,登录后应移至下一个活动,但不能正常工作

public void buttonClicked() {
    boolean h = dbHandler.CheckIsDataAlreadyInDBorNot(username.getText().toString());
    if (h) {

        Intent i = new Intent(getApplicationContext(), third.class);
        startActivity(i);
    }

}

// db handler code

        public  boolean CheckIsDataAlreadyInDBorNot(String fieldValue) {
        SQLiteDatabase db = getWritableDatabase();
        String Query = "Select * from " + TABLE_LOGIN + " where " +   COLUMN_USERNAME + " = " + fieldValue;
        Cursor cursor = db.rawQuery(Query, null);
        if(cursor.getCount() == 0){
            cursor.close();

            return false;
        }
        cursor.close();
        return true;
    }

登录类详情

public class LogIn {
private int _id;
private String _username;
private String _password;

public LogIn(){
}

public LogIn(String username,String password){
    this._username = username;
    this._password = password;

}

public void set_id(int _id) {
    this._id = _id;
}


public void set_password(String _password) {
    this._password = _password;
}

public int get_id() {

    return _id;
}

public String get_username() {
    return _username;
}

public String get_password() {
    return _password;
}

public void set_username(String _username) {

    this._username = _username;
}

}

1 个答案:

答案 0 :(得分:0)

我会尝试建议/纠正我认为导致问题的区域, 发布您的logcat或任何错误将有助于更多...

1- addButton的逻辑:

您应该检查用户是否已经存在,并根据此行动 目前您正在插入记录,然后检查它是否存在, 因此r始终为true

更改方法如下:

public void addButtonClicked(View view) {

    boolean r = dbHandler.CheckIsDataAlreadyInDBorNot(username.getText().toString());
    if (r) {
        Toast.makeText(this, "Username already exists", Toast.LENGTH_LONG).show();
        return;
    }else{
        LogIn ln = new LogIn(username.getText().toString(), password.getText().toString());

        dbHandler.addUser(ln);
        printDatabase();
        Toast.makeText(this, "Saved", Toast.LENGTH_LONG).show();
    }
}

2-我认为你在方法CheckIsDataAlreadyInDBorNot()的sql-query中有错误 虽然我认为你应该使用 query()

A。修复当前代码:您缺少包装值的单个状态(因为它是字符串)where userName='Smith'

public  boolean CheckIsDataAlreadyInDBorNot(String fieldValue) {
    SQLiteDatabase db = getWritableDatabase();
    String Query = "Select * from " + TABLE_LOGIN + " where " +   COLUMN_USERNAME + " = '" + fieldValue + "'";
    Cursor cursor = db.rawQuery(Query, null);
    if(cursor.getCount() == 0){
        cursor.close();

        return false;
    }
    cursor.close();
    return true;
}

B。使用query()

public  boolean CheckIsDataAlreadyInDBorNot(String fieldValue) {
    SQLiteDatabase db = getWritableDatabase();
    Cursor cursor = db.query(TABLE_LOGIN, null, COLUMN_USERNAME+"=?", new String[]{fieldValue}, null, null, null);
    if(cursor.getCount() == 0){
        cursor.close();
        return false;
    }
    cursor.close();
    return true;
}