1

databaseutils を使用して、データベースで SQL クエリを実行しています。基本的にはログインですが、ログインしている人のユーザーIDを取得したいので、それを選択しています。結果があればうまくいきますが、結果がなければ失敗します。設定されているかどうかを設定する方法がある場合は?

    if(String.valueOf(loginCount).equals("2")) {

    File dbfile = new File(Global.StaticDB + "/Users" ); 
    SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);

    String loginQueryCheck=(String)DatabaseUtils.stringForQuery(db,"SELECT UserID from Users where Username like '" + txtUsername.getText().toString() + "' AND Password like '" + txtPassword.getText().toString() + "'",null);

    Log.e("Login Query:", loginQueryCheck);
    db.close();  

    if(loginQueryCheck.length() > 1) {
        Context context = getApplicationContext();
    CharSequence text = "Logged In";
    int duration = Toast.LENGTH_SHORT;
    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
    Intent ShowMainPage = new Intent(view.getContext(), MainPage.class);
    startActivityForResult(ShowMainPage, 0);
    } else {
        Context context = getApplicationContext();
    CharSequence text = "Login Failed";
    int duration = Toast.LENGTH_SHORT;
    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
    }
    }
4

2 に答える 2

0

SQL ステートメントで UserID をクエリする代わりに、UserID を数えようとするかもしれません。

int loginQueryCheck=(int)DatabaseUtils.stringForQuery(db,
      "SELECT COUNT(DISTINCT UserID) FROM Users WHERE Username like '" +
      txtUsername.getText().toString() + "' AND Password like '" +
      txtPassword.getText().toString() + "'",null);
于 2012-09-12T09:19:35.560 に答える
0

チェックを次のように変更します。

if(loginQueryCheck != null && !loginQueryCheck.equals("") && loginQueryCheck.length() > 0)
于 2012-09-12T09:15:15.637 に答える