2017-03-01 2 views
1

Ich machte eine Desktop-Schule-Management-System-Anwendung mit Java und MySQL mit Netbeans. Es gibt 3 GUIs wie ADMIN GUI, TEACHER GUI und STUDENT GUI. Jetzt möchte ich tun, können Benutzer Echtzeit Zugriff auf die GUIs von verschiedenen Computern. was ich meine, ist, wenn admin Zugriff auf das System von Admin-Computer, wie die gleiche Zeit ein Lehrer kann auf das System von jedem anderen Computer von der Lehrer-GUI. Hier sind alle Computer über ein LAN-Netzwerkkabel verbunden. Wie kann ich das machen..? Bitte helfen Sie. (Codes beigefügt).Zugriff auf Java-Anwendung mit MySQL DB von LAN-Computern

DB Connection-Klasse (DBConnection.java):

import java.sql.DriverManager; 
import com.mysql.jdbc.Connection; 

public class DBConnection { 
public static Connection dbconmethod() throws Exception{ 

    Connection c; 

    Class.forName("com.mysql.jdbc.Driver"); 

    c=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/ssdb","root","250"); 

    return c; 

} 
} 

Anmeldung JFrame-Code (Login.java):

private void jBtn_LoginActionPerformed(java.awt.event.ActionEvent evt) {           

     if (txt_UserID.getText().equals("admin")&&txt_Password.getText().equals("123250")){ 
       new AdminHome().setVisible(true); 
       AdminHome.txt_Log.setText(Login.txt_UserID.getText()); 
       this.dispose(); 

     }else if (txt_UserID.getText().equals("teacher")&&txt_Password.getText().equals("123250")){ 
       new TeacherHome().setVisible(true); 
       TeacherHome.txt_Log.setText(Login.txt_UserID.getText()); 
       this.dispose(); 

     }else if (txt_UserID.getText().equals("student")&&txt_Password.getText().equals("123250")){ 
       new StudentHome().setVisible(true); 
       StudentHome.txt_Log.setText(Login.txt_UserID.getText()); 
       this.dispose(); 

     }else{ 

     String uid = txt_UserID.getText(); 
     String pass = txt_Password.getText(); 
     String s1 = ""; 

     String sql = "SELECT status FROM admin_data WHERE user_id='"+uid+"' and password='"+pass+"' UNION SELECT user_role FROM tch_data WHERE user_id='"+uid+"' and password='"+pass+"' UNION SELECT user_role FROM stu_data WHERE user_id='"+uid+"' and password='"+pass+"'"; 

     try { 
     java.sql.Connection c = DBConnection.dbconmethod(); 
     Statement s=c.createStatement(); 
     ResultSet rs= s.executeQuery(sql); 

      while (rs.next()){ 
       s1 = rs.getString(1); 

       }if(s1.equalsIgnoreCase("Active")){ 
         new AdminHome().setVisible(true); 
         AdminHome.txt_Log.setText(Login.txt_UserID.getText()); 
         this.dispose(); 

       }else if(s1.equalsIgnoreCase("PRINCIPAL")||s1.equalsIgnoreCase("D.PRINCIPAL")||s1.equalsIgnoreCase("V.PRINCIPAL")||s1.equalsIgnoreCase("TEACHER")){ 
         new TeacherHome().setVisible(true); 
         TeacherHome.txt_Log.setText(Login.txt_UserID.getText()); 
         this.dispose(); 

       }else if(s1.equalsIgnoreCase("STUDENT")){ 
         new StudentHome().setVisible(true); 
         StudentHome.txt_Log.setText(Login.txt_UserID.getText()); 
         this.dispose(); 

       }else { 
         UIManager.put("OptionPane.messageFont", new Font("Monospaced", Font.BOLD, 22)); 
         JOptionPane.showMessageDialog(rootPane, "UserID or Password Incorrect, Re-check and try again!","Error",JOptionPane.ERROR_MESSAGE); 
         txt_UserID.setText(null); 
         txt_Password.setText(null); 
       } 

     } catch (Exception ex) { 
      ex.printStackTrace(); 

     } 
    }  

}      
+0

was hast du meine, wie ich kann das machen? –

+0

Ihr Problem ist kein GUI-Problem, mysql ist ein Datenbank-SERVER, es bietet die Fähigkeit, von mehreren entfernten Clients gleichzeitig zugegriffen zu werden. Sie müssen die Datenbank so konfigurieren, dass externe Verbindungen zulässig sind, die durch das Subnetz begrenzt werden sollten, um den Zugriff von Personen auf die Datenbank aus Sicherheitsgründen zu beschränken. Eine bessere Lösung könnte darin bestehen, nur lokale Verbindungen zuzulassen und einen Webdienst für Remoteclients bereitzustellen, der jedoch den Rahmen Ihres Vorhabens sprengen könnte. Was Sie tun müssen, finden Sie in der mysql-Dokumentation und lesen Sie die Zugriffskonfiguration – MadProgrammer

Antwort

1

Sie haben t benutzen Wenn Ihre IP-Adresse Ihres Servers auf einem anderen Computer oder Server vorhanden ist, sollten Sie die IP dieses Computers verwenden, um eine Verbindung zu erstellen. Stattdessen sollten Sie für localhost die IP dieses Computers oder Servers verwenden:

DriverManager.getConnection("jdbc:mysql://ip_of_your_computer:3306/ssdb","root","250"); 

Hinweis

Sie Preprepd Statement doc statt Statement verwenden kann es sicherer und hilfreich ist, weil es eine SQL-Injection verursachen können Sie hier lesen können, dass mehr über SQL Injection