2017-12-07 3 views
-2

ユーザー登録に使用する以下のコードに関する3つの質問があります。Java JDBC - ユーザー登録&ログイン

1)ユーザー名とパスワードの領域に空の値を指定してユーザーを登録できないようにするにはどうすればよいですか?

2)&は、ユーザー資格情報がデータベースに既に存在する場合には、フォームを再度実行することをお勧めします。メイン画面に戻る別の方法はありますか?

3)私のプログラムは正しく動作しますが、 "JPasswordFieldタイプのメソッドgetText()は推奨されていません"のような行に警告メッセージがあります。それはどういう意味ですか?

コード:

public void actionPerformed(ActionEvent arg0) { 


      try 
        { 
       String userID = userIDinput.getText(); 
       String pass = passwordField.getText(); 
       String myDriver = "com.mysql.jdbc.Driver"; //jdbc driver loaded 
       String myUrl = "jdbc:mysql://localhost:3306/masterdata_db?autoReconnect=true&useSSL=false"; 
       Class.forName(myDriver); 
       Connection conn = DriverManager.getConnection(myUrl, "root", ""); 

       Statement st = conn.createStatement(); 
       ResultSet resultSet; 

       String check = "SELECT Username FROM userregistration WHERE Username = '"+userID+"' ";  
       resultSet = st.executeQuery(check); 


       if(!resultSet.next()){ 

        String sql = "INSERT INTO userregistration" 
          + "(Username, Password) VALUES" 
          + "(?,?)"; 
        PreparedStatement pSt=conn.prepareStatement(sql); 
        pSt.setString(1, userID); 
        pSt.setString(2, pass);  
        pSt.executeUpdate(); 
        conn.close(); 

       } 

       else { 

        JOptionPane.showMessageDialog(frame, "USER ALREADY EXISTS. TRY ANOTHER ONE!", "Inane error",JOptionPane.ERROR_MESSAGE); 
        dispose(); 
        new Login().setVisible(true); 
       } 


       } 
      catch (Exception e) 
       { 

        e.printStackTrace(); 
       } 

      } 
+0

廃止予定のメソッドは、新しいコードを書くと廃止されたメソッドを完全に回避する場合には、もはや使用しないでください。代わりにgetText()の代わりにgetPassword()メソッドを使用してください。 –

+0

Plsは投稿ごとに1つ以上の質問をしません。回答と検索がさらに困難になります! – Shadow

答えて

0

1)

if(userID.trim().isEmpty())//trim removes whitespaces 
{ 
    throw new SomeKindOfException(); 
    //or just ... 
    return; 
} 

this questionを参照してください。

2)disposenew Login()を削除してください。 JOptionPaneは自動的に「メイン画面に戻る」。

3)あなたはこのように、パスワードフィールドを使用する必要があります。

JPasswordField passwordField = new JPasswordField(); 
char[] chars = passwordField.getPassword(); 
String pwd = new String(chars); 
for (int i=0; i<chars.length; i++) chars[i] = ’x’; //overwrite password when done for more security 

詳細についてはHow to Use Password Fieldsを参照してください。

Stringは不変なので、JPasswordFieldはStringの代わりにchar[]を使用します。 詳細については、this questionを参照してください。

+0

ありがとう、それは私の多くを助けた – BlockeeR