0

簡単なユーザー登録アプリを用意しています。データベースには、username と password の 2 つのフィールドのみが含まれており、username が主キーです。重複したレコードを入力しようとすると、(予想どおり) 例外がスローされます。「ユーザーは既に存在します」というカスタム メッセージを表示したい。これは私のコードです:

public boolean addUser(UserDetails user) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put("USERNAME", user.getUserId());
    values.put("PASSWORD", user.getPassword());

    try {
        db.insert("USERNAME_PASSWORD", null, values);
    } catch (Exception e) {
        return false;
    }
    db.close();
    return true;
}


//In the class from which I am calling this method:
    boolean isAdded = util.addUser(user);
        if (!isAdded) {
            Toast.makeText(this,
                    "Username alread exists! Try with another user name.",
                    Toast.LENGTH_LONG).show();
        }

logcat に、例外の詳細が表示されます。ユーザーに何らかのエラー メッセージを表示したいのですが、関数は常に を返しtrueます。これを行う方法を提案してください。

4

2 に答える 2

0

insertOrThrow()キャッチするためにinsertに例外をスローさせるために使用する必要があります

しかし、私の意見では、ccheneson のソリューションを使用することは、例外をキャッチするよりも優れた方法です。

于 2013-08-24T19:31:38.677 に答える
0

新しいメソッドgetUser(String userId)を作成し、メソッドから呼び出しますaddUser

getUser何かを返す場合は、メソッドaddUserからreturn true;

于 2013-08-24T19:37:07.220 に答える