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는 게시물 당 두 개 이상의 질문을하지 않습니다. 답변과 검색이 훨씬 어려워집니다. – 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