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