2016-11-25 57 views
0

我目前正在嘗試使用Java編寫一個簡單的CRUD。我已經創建了一個單獨的類來連接到mySQL數據庫。然後,我創建了一個JFrame,我用這個擴展將該類綁定到了我的JFrame。我還創建了一個名爲「FormCadastro」的JDialog,當用戶在JMenu中選擇某個函數時打開,此時一切工作正常,JDialogJFrame出現,但問題是JDialog類未看到我的「ConnectDataBase」類,我需要訪問它時,用戶點擊「註冊」從JDialog TextFields發送數據到我的數據庫。JDIALOG沒有看到其他類

JDialog類的

JButton OkBtn = new JButton("Cadastrar"); 

OkBtn.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) 
    { 
     String query = "INSERT INTO dados_pessoais(Codigo, Nome, SobreNome, Endereco, Numero, Bairro, Cidade, UF, Email, Celular, Telefone) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
     PreparedStatement stmt = con.prepareStatement(query); 
     //JDialog does not see "con" variable and PreparedStatement class even if i import it using import Classes.ConnectDataBase, 
    } 
}  

如果我在JDialog的地方在

public class FormCadastro extends JDialog 

使用extends ConnectDataBase我得到了很多的錯誤,所以我不知道該怎麼來訪問數據庫中的哪些我的JDialog中的類爲 。

ConnectDataBase類

public class ConnectDataBase 
{ 
    private Connection con = null; 
    private ResultSet rs = null; 

    public void ConnectDataBase() throws ClassNotFoundException 
    { 
     try 
     { 
      Class.forName("com.mysql.jdbc.Driver"); 
      this.con = DriverManager.getConnection("jdbc:mysql://localhost:3306/usuarios", "root", "admin"); 
      JOptionPane.showMessageDialog(null, "Conexão com o Banco de Dados bem sucedida"); 
     } 
     catch(Exception e) 
     { 
      JOptionPane.showMessageDialog(null, "Erro ao tentar conectar ao Banco de Dados", "Erro de Conexão", JOptionPane.ERROR_MESSAGE); 
     } 
    } 
} 

回答

1

如果你希望你的JDialog,繼承類使用ConnectDataBase的功能,那麼你有一個可行ConnectDataBase傳遞到JDialog類的,也許在它的構造函數或通過一個setter方法。使用導入不會神奇地授予能力。您需要使用構圖

例如,

public class FormCadastro extends JDialog { 
    private ConnectDataBase connectDataBase; 

    public FormCadastro(ConnectDataBase connectDataBase) { 
     this.connectDataBase = connectDataBase; 

     JButton OkBtn = new JButton("Cadastrar"); 
     OkBtn.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       String query = "INSERT INTO dados_pessoais (Codigo,Nome,SobreNome,Endereco,Numero,Bairro,Cidade,UF,Email,Celular,Telefone) VALUES (?,?,?,?,?,?,?,?,?,?,?)"; 

       // use public methods of your connectDataBase object here 
      } 
     }); 
    } 
} 
+0

謝謝,但尚未即時卡住在此; / –