我试图找到数据库中是否存在用户名,如果存在,则布尔变量将设置为true,否则将设置为false。即使表中不存在用户名,似乎变量始终设置为true。我检查了表中的数据并尝试了多次,但变量始终设置为true,并且无论用户名是否在数据库中,都始终显示消息“Username exists”。这是我的代码。我做错了什么?
----登录类,用于定义按钮和编辑文本字段,并在单击登录按钮时触发消息-------------
public class Login extends Activity{
Button sqllogin;
EditText sqlusername, sqlpassword;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sqlusername = (EditText) findViewById(R.id.etuname1);
sqlpassword = (EditText) findViewById(R.id.etpass);
sqllogin = (Button) findViewById(R.id.bLogin);
sqllogin.setOnClickListener(new View.OnClickListener() {
//Method that fires a message when the Login button is clicked
public void onClick(View v) {
switch (v.getId()){
case R.id.bLogin:
String username = sqlusername.getText().toString();
String password = sqlpassword.getText().toString();
DBAdapter entry = new DBAdapter(Login.this);
entry.open();
boolean r = entry.findUsername(username);
if(r == true){
Toast.makeText(Login.this, "Username Exists", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(Login.this, "Username does not Exists", Toast.LENGTH_LONG).show();
}
entry.close();
break;
}
}
});
}
}
--------- DBAdpater类中的方法,用于检查表中是否存在用户名------------
public boolean findUsername(String username) {
Cursor c = ourDatabase.query(true, DATABASE_TABLE_L, new String[] {
KEY_USERNAME, KEY_PASSWORD}, KEY_USERNAME + "='"
+ username +"'", null, null, null, null, null);
if (c!= null) {
return false;
}
else{
return false;
}
}
答案 0 :(得分:1)
不是检查游标是否为null,而是检查游标是否包含任何数据,例如:
if(cursor.getCount()!=0)
return false;
else
return true;
getCount()返回查询返回的行数。