美好的一天,我总是使用getString()
和getInt()
来获得结果。我正在做一个简单的搜索,如果找到它我想得到一个布尔结果。
这是我的示例代码: ForgotPassword.java
@Override
public void onClick(View v) {
String strUserForget = edtForgotPassword.getText().toString().trim();
switch (v.getId()){
case R.id.buttonSubmit:
if (strUserForget.matches("")){
Toast.makeText(ForgotPasswordActivity.this, "Please Provide Complete Info", Toast.LENGTH_LONG).show();
}else {
//String forgetPassProject = "";
Cursor cursor = (registerDatabase.getSingleRecordForgetPass(strUserForget));
boolean value = (cursor.getInt(registerDatabase.ID) == 1);
Toast.makeText(ForgotPasswordActivity.this, "Your password is: " , Toast.LENGTH_LONG).show();
}
break;
case R.id.buttonGoBackWelcome:
startActivity( new Intent(getApplicationContext(),WelcomeActivity.class));
finish();
break;
}
}
对于registerSQLDatabase.java
public Cursor getSingleRecordForgetPass(String username){
String querySingleRecord = "SELECT * FROM " + DB_TABLE + "WHERE = " +FULL_NAME+ "LIKE" +username ;
return sqLiteDatabase.rawQuery(querySingleRecord,null);
}
布尔值=(cursor.getInt(registerDatabase.ID)> 0);是不相容的。
答案 0 :(得分:1)
boolean value = (cursor.getInt(registerDatabase.ID) == 1);
使得NPE
因为没有结果,为了避免此异常使用Objects.equals
并检查Cursor
的结果数量:
if (!Objects.equals(cursor, null) && cursor.getCount() > 0) {
// has results
} else {
// has NO results
}
之前的java 1.7:
if (cursor != null && cursor.getCount() > 0) {
// has results
} else {
// has NO results
}
作为一个辅助问题,正如Rohit5k2所指出的那样,您的查询中存在不必要的=
:
String querySingleRecord =
"SELECT * FROM " + DB_TABLE + " WHERE " + FULL_NAME + " LIKE " + username ;
如果您不需要Cursor
信息,只需创建一个返回布尔值的方法:
public boolean existsUser(String username)
{
String querySingleRecord = "SELECT * FROM " + DB_TABLE + "WHERE " +FULL_NAME+ "LIKE" +username ;
Cursor cursor = sqLiteDatabase.rawQuery(querySingleRecord,null);
// now you have the results, DON'T return them, just check if contains
// > Java 7: if (!Objects.equals(cursor, null) && cursor.getCount() > 0) {
if (cursor != null && cursor.getCount() > 0) {
return true;
}
return false;
}
以这种方式使用它:
if (strUserForget.matches("")){
Toast.makeText(ForgotPasswordActivity.this, "Username cannot be empty.", Toast.LENGTH_LONG).show();
} else if (registerDatabase.existsUser(strUserForget)) {
Toast.makeText(ForgotPasswordActivity.this, "Your password is: " , Toast.LENGTH_LONG).show();
} else {
Toast.makeText(ForgotPasswordActivity.this, "User does not exists" , Toast.LENGTH_LONG).show();
}