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条件に入り真を返します。

ただし、この値を呼び出し元関数の戻り値に割り当てると、false が割り当てられます。

boolean isValidUser=con.CheckUser(etLoginID.getText().toString(), etPassword.getText().toString()); を falseにすることを意味します。

isValidUser should get true in such case.

私を助けてください。

4

6 に答える 6

1

こんにちは Shrimant Bajirao Peshawe - 私は
、ステートメント " if(resultSet.getRow()>0) " を " if(resultSet. next ()) " に変更してから試してください。
参照 :参照

于 2013-09-11T06:52:08.290 に答える
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

最初に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

次のコードを試してください...

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 に答える