Android 注册并登录不起作用

Android 注册并登录不起作用,android,Android,我正在做android应用程序开发和登录模块的工作,现在我正在尝试注册,如果用户名已经存在,它会显示一条消息,说明用户名已经存在,用户应该登录 我的代码 //报名 public void addButtonClicked(View view) { LogIn ln = new LogIn(username.getText().toString(), password.getText().toString()); dbHandler.addUser(ln); pr

我正在做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);
    }

}
//数据库处理程序代码

        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-addButton的逻辑:

您应该检查用户是否已经存在,并基于此进行操作 当前您正在插入一条记录,然后检查它是否存在, 因此
r
将始终为

更改方法如下:

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-我认为sql查询中的方法
checkisDataReadyInDBorNot()
虽然我认为您应该使用

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()


请提供登录类详细信息。您将用户添加到数据库,然后检查它是否存在,并想知道它为什么存在?什么是“它不工作”实际上是什么意思?@Henry我想要的是,如果一个用户注册,我想在数据库中存储他/她的详细信息。如果该用户已经存在,他/她只需要登录并移动到下一页或下一个活动。在我的情况下,它们都不起作用。你有任何错误、崩溃、,logcat异常?实际上,代码运行时没有错误或异常,但当我单击“登录”或“注册”按钮时,它显示应用程序已停止工作。我注意到这是由于我正在使用if语句。是否有其他解决方案?当您收到该消息时(应用程序已停止)必须有一个异常,异常有一个
stackTrace
这个stackTrace可以在logcat中找到,您需要在这里获取它,这样我们就可以找出问题所在,除了很难猜测之外。。。
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;
}