我正在尝试创建一个简单的登录系统。这是数据库类中的男女同校。我的方法是否正确?如果用户名和密码都正确,它应该返回true,如果数据库中的任何一个是错误的(未注册),它应该返回false?有没有更简单的方法来编写这种方法?
public boolean getAccount(String name, String password) {
int test = 0;
database = getReadableDatabase();
String sql = "SELECT * FROM tbl_account WHERE username='name' AND password='password'";
Cursor c = database.rawQuery(sql, null);
if (c.moveToFirst()) {
do {
if (c.getString(0).isEmpty()) {
test = 0;
}
else if (c.getString(0).isEmpty() == false) {
if (name.equals(c.getString(0))) {
if (c.getString(1).isEmpty()) {
test = 0;
}
else if (password.equals(c.getString(1))) {
test = 1;
}
}
}
} while (c.moveToNext());
}
if (test == 0) {
return false;
} else {
return true;
}
}
答案 0 :(得分:3)
最佳做法是使用?具有选择参数的占位符,您可以:
String sql = "SELECT * FROM tbl_account WHERE username = ? AND password = ?";
Cursor c = database.rawQuery(sql, new String[] {name, password});
这可以避免问题,其中参数本身包含引号和撇号等字符,否则会破坏构造的SQL字符串。
答案 1 :(得分:0)
我认为你的sql应该是:
String sql = "SELECT * FROM tbl_account WHERE username='" + name +
"' AND password='" + password + "'";
试试这个sql。希望它会有所帮助。