2017-08-11 4 views
-4
String email = email_register_txt.getText(); 
    String username = username_register_txt.getText(); 

    Statement stmt = db_connection.connect().createStatement(); 

    String sql = "SELECT * FROM user_profile WHERE username=' "+username+" ' OR user_email=' "+email+" ' "; 

    res = stmt.executeQuery(sql); 

    if(res.next()) { 

     if(res.getString("username").equalsIgnoreCase(username)) { 
          JOptionPane.showMessageDialog(registerPanel, "The username has already been already registered!"); 

     } else if (res.getString("user_email").equalsIgnoreCase(email)) { 
          JOptionPane.showMessageDialog(registerPanel, "This email address has already been already registered!"); 
    } 

} else { ... 

既にデータベースに挿入されているユーザー名/メールアドレスを入力すると、いずれかのエラーメッセージが表示されます。 私の登録作業はしていますが、確認部分に何か不足があると思いますか?登録の確認が機能しないjava

+0

問題は... –

+0

すでに存在するユーザー名を入力しても機能しません。何もしません。 –

+0

クエリで行が返されることを確認しましたか? –

答えて

0

明らかにすべての関連コードが表示されていないか、必要なコードをメソッドに配置してこの作業を行う必要があります。

ResultSetは、基本的にはクエリの結果のコレクションであり、そのクエリのすべての結果にアクセスするために反復処理が必要です。 であり、ループは、結果セットオブジェクト内に含まれるすべての結果を反復処理する手段として広く使用されています。 ResultSetオブジェクトを宣言していても、まだそのコードを利用しようとしているあなたのコードはどこにもありません。おそらく次のようなものを試してみてください。

String email = email_register_txt.getText(); 
String username = username_register_txt.getText(); 

try { 
    Connection conn = DriverManager.getConnection("...your jdbc connection string..."); 
    conn.setAutoCommit(false); 

    String sql = "SELECT * FROM user_profile WHERE username = ? OR user_email = ?"; 
    PreparedStatement stmt = conn.prepareStatement(sql); 
    stmt.setString(1, username); 
    stmt.setString(2, email); 

    ResultSet res = stmt.executeQuery(); 

    // Utilize a boolean Flag to indicate whether 
    // or not the User is registered. 
    boolean registered = false; 
    while (res.next()) { 
     if(res.getString("username").equalsIgnoreCase(username)) { 
      JOptionPane.showMessageDialog(registerPanel, 
        "The username has already been already registered!"); 
      registered = true; 
      break; // Get out of the loop. No more need for it. 
     } 
     else if(res.getString("user_email").equalsIgnoreCase(email)) { 
      JOptionPane.showMessageDialog(registerPanel, 
        "This email address has already been already registered!"); 
      registered = true; 
      break; // Get out of the loop. No more need for it. 
     } 
    } 

    // Do what needs to be done if User is NOT registered. 
    if (!registered) { 
     ............................... 
     ............................... 
    } 
    res.close(); 
    stmt.close(); 
    conn.close(); //Close the DB connection 
} 
catch (SQLException ex) { 
    ex.printStackTrace(); 
} 

クラスPreparedStatementクラスの使用に気づくでしょう。

1)PreparedStatementには、動的クエリとパラメトリッククエリを記述することができます。

2)PreparedStatementは、Javaの文ステートメントよりも高速です。

3)のPreparedStatementWhy to use Prepared Statements in Java hereについてもっと読む

のJava

SQLインジェクション攻撃を防ぐことができます。

+0

それは動作する、私はそれが正常に動作するために欠けていたブーリアンとwhileループだと思う。はい、私は私の結果セットを宣言し、ページの上に文を準備する、なぜあなたはそれを見ることができませんでした –

関連する問題