布尔函数没有返回正确的值

时间:2013-09-11 06:42:24

标签: android android-layout

我正在使用以下使用布尔值的函数。

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.

请帮帮我。

6 个答案:

答案 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()

中检查recFound的条件

这可以解决您的问题。