【问题标题】:Boolean function not returning proper value布尔函数没有返回正确的值
【发布时间】:2013-09-15 01:45:06
【问题描述】:

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

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.

请帮帮我。

【问题讨论】:

  • resultSet 是一个游标......??

标签: android android-layout


【解决方案1】:

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

【讨论】:

  • getRow() 函数每次都返回 0,而记录确实存在。它应该返回我 1(满足 >0 条件
【解决方案2】:

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

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

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

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

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

【讨论】:

  • 返回时返回true,但捕获时返回false
  • 当我看到它的错误时在调试器中
【解决方案3】:

尝试以下代码...

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);
}

【讨论】:

  • getRow() 函数每次都返回 0,而记录确实存在。它应该返回我 1(满足 >0 条件
【解决方案4】:

更改:

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

收件人:

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

删除catch()中的recFound条件检查

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

【讨论】:

  • getRow() 函数每次都返回 0,而记录确实存在。它应该返回我 1(满足 >0 条件
  • 使用resultSet.moveToNext()。我假设 resultSet 是光标
【解决方案5】:

替换代码

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

  if(resultSet.next()){
      return true;
  } else {
     return false;
  }

【讨论】:

  • getRow() 函数每次都返回 0,而记录确实存在。它应该返回我 1(满足 >0 条件
【解决方案6】:

尝试初始化 isValidUser 开头为 false

在返回调用者之前,还记录 resultSet.getRow()recFound 的值。

你也可以尝试像下面这样使用光标

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;
            }
}

【讨论】:

  • getRow() 函数每次都返回 0,而记录确实存在。它应该返回我 1(满足 >0 条件
猜你喜欢
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 2013-09-11
  • 2023-03-05
相关资源
最近更新 更多