我正在使用以下使用布尔值的函数。
int recFound=0;
public Boolean CheckUser(String uName,String password)
{
try
{
statement=conn.createStatement();
resultSet=statement.executeQuery("select count(*) from UserMaster where username LIKE'"+uName+"' and password LIKE'"+password+"'");
if(resultSet.getRow()>0)
{
recFound=1;
}
else
{
recFound=0;
}
}
catch (Exception e) {
e.printStackTrace();
recFound=0;
}
if(recFound == 0)
{
return false;
}
else
{
return true;
}
}
我通过以下方式调用此函数:
boolean isValidUser=con.CheckUser(etLoginID.getText().toString(), etPassword.getText().toString());
if(isValidUser)
{
Intent i= new Intent(getApplicationContext(),Messages.class);
startActivity(i);
}
当我通过此功能时,正确的值不是recFound=1;
在最后一个条件下虽然recFound == 0但它进入了else条件并返回true。
但是,将此值分配给调用函数返回值时,它会指定false。
意味着它使boolean isValidUser=con.CheckUser(etLoginID.getText().toString(), etPassword.getText().toString());
成为假。
isValidUser should get true in such case.
请帮帮我。
答案 0 :(得分:1)
你在CheckUser方法中调用一个布尔函数,所以它返回true或false值..
Jo只返回该函数中的 true 值。
您也可以查看:
if(isValidUser==true)
{
Intent i= new Intent(getApplicationContext(),Messages.class);
startActivity(i);
}
并在日志中打印一个值 isValidUser ,该值为
答案 1 :(得分:1)
你好Shrimant Bajirao Peshawe - 我,
将语句“ if(resultSet.getRow()> 0)”更改为“ if(resultSet.next())”然后尝试。
参考:Refer
答案 2 :(得分:1)
尝试以下代码...
int recFound = 0;
public boolean CheckUser(String uName, String password) {
try {
statement = conn.createStatement();
resultSet = statement.executeQuery("select count(*) from UserMaster where username LIKE '" + uName + "' and password LIKE '" + password + "'");
if (resultSet.getRow() > 0) {
recFound = 1;
} else {
recFound = 0;
}
if (recFound > 0) {
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
和
if(con.CheckUser(etLoginID.getText().toString(), etPassword.getText().toString())) {
Intent i= new Intent(getApplicationContext(),Messages.class);
startActivity(i);
}
答案 3 :(得分:1)
尝试初始化 开始时 isValidUser 为false
还会在返回调用者之前记录 resultSet.getRow()和 recFound 的值。
你也可以尝试使用下面的cusrsor
int recFound=0;
private SQLiteDatabase mDb;
public Boolean CheckUser(String uName,String password)
{
try
{
String sql="select count(*) from UserMaster where username LIKE'"+uName+"' and password LIKE'"+password+"'";
Log.i(TAG,"Executing Query : "+sql);
mCur = mDb.rawQuery(sql, null);
Log.i(TAG,"Query Executed Successfully");
if(mCur!=null)
{
recFound=1;
}
else
{
recFound=0;
}
}
catch (Exception e) {
e.printStackTrace();
recFound=0;
}
if(recFound == 0)
{
return false;
}
else
{
return true;
}
}
答案 4 :(得分:1)
替换代码
if(resultSet.getRow()>0){
recFound=1;
} else {
recFound=0;
}
到
if(resultSet.next()){
return true;
} else {
return false;
}
答案 5 :(得分:1)
更改:强>
if(resultSet.getRow()>0)
{
recFound=1;
}
else
{
recFound=0;
}
以强>
if(resultSet.getRow()>0)
{
return true;
}
else
{
return false;
}
删除catch()
这可以解决您的问题。