0

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

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.

请帮我。

4

6 回答 6

1

您在 CheckUser 方法中调用布尔函数,因此它返回 true 或 false 值..

Jo 只是在该函数中返回真值。

您还可以通过以下方式进行检查:

if(isValidUser==true)
            {
                Intent i= new Intent(getApplicationContext(),Messages.class);
                startActivity(i);
            }

并在日志中打印一个值isValidUser它正在获取哪个值

于 2013-09-11T06:44:27.063 回答
1

嗨 Shrimant Bajirao Peshawe - 我
将语句“ if(resultSet.getRow()>0) ”更改为“ if(resultSet.next ()) ”,然后尝试一下。
参考:参考

于 2013-09-11T06:52:08.290 回答
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);
}
于 2013-09-11T06:56:04.707 回答
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;
            }
}
于 2013-09-11T07:00:44.367 回答
1

替换代码

 if(resultSet.getRow()>0){
      recFound=1;
  } else {
      recFound=0;
  }

  if(resultSet.next()){
      return true;
  } else {
     return false;
  }
于 2013-09-11T07:00:47.570 回答
1

改变:

               if(resultSet.getRow()>0)
                {
                    recFound=1;
                }
                else
                {
                    recFound=0;
                }

到:

               if(resultSet.getRow()>0)
                {   
                    return true;
                }
                else
                {
                    return false;
                }

删除条件检查 recFound 中catch()

这应该可以解决您的问题。

于 2013-09-11T07:11:46.627 回答