Boa tarde!
Tenho uma frame onde o usuario digita os dados de acesso ao banco, pex. nome do banco, driver, usuario,senha e assim por diante. Então preciso pegar esses dados e conectar ao banco. No entanto, até agora só conheço essa forma de conectar ao banco. Desta forma, tenho todas os metodos ‘tradicionais’, (alterar,excluir,… pronto para ser usado).
O que eu preciso fazer para pode pegar da tela e conectar ao banco, essa ação de pegar e conectar vai ficar na classe que contem a acao dos botoes?
public static void main(String[] args) {
try {
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn =
DriverManager.getConnection("jdbc:mysql://LOCALHOST/bi_teste" , "root", "bob" );
System.out.println ("conexao ok");
} catch (ClassNotFoundException e) {
System.out.println (e.getMessage());
}catch (SQLException e) {
System.out.println(e.getMessage());
}
Você pode criar uma classe somente para a conexão e as operações, e uma classe para o frame. No frame você instancia um novo objeto da classe de conexão, passando pra ele as informações como argumentos.
Algo assim:
Classe de conexão
public class Conexao {
public void conectar (String url, String usuario, String senha) {
try {
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn = DriverManager.getConnection(url , usuario, senha );
System.out.println ("conexao ok");
} catch (ClassNotFoundException e) {
System.out.println (e.getMessage());
}catch (SQLException e) {
System.out.println(e.getMessage());
}
}
Outros métodos de operação...
}
Classe do frame, dentro do evento do botão conectar:
Conexao conexao = new Conexao();
conexao.conectar(tfUrl.getText(), tfUsuario.getText(), tfSenha.getText());
Depois que postei , cai na real e fiz algo muito parecido com que voce postou pra mim. Contudo ficou assim, mas continua dando erro.
-->classe conexao
String driver = pagina.getDriver();
String url = pagina.getUrl();
String usuario = pagina.getUsuario();
String senha = pagina.getSenha();
try{
Class.forName(driver).newInstance();// pegar o que veio da tela---- tentei armazenar em uma variavel--- axo ki naum deu certo
Connection conn = DriverManager.getConnection(url,usuario,senha);
return conn;
}
catch(SQLException ex){
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
return null;
}
catch(Exception e){
System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
return null;
}
}
}
–> depois na acao do botao fiz assim :
Conexao conexao = new Conexao();
conexao.conectar(); // passei vazio -- pq chamei esse metodo de outra classe
Qual o erro que tá dando?
erro de programador iniciante… Consegui arrumar e minha classe conexao ficou assim… exatamente como você me informou… e a classe onde tem o botão ficou como vc me passou… Muito obrigado… consegui aprender mais um coisa nova nesta tarde.
public void conectar (String driver,String url, String usuario, String senha) {
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url , usuario, senha );
System.out.println ("conexao ok");
JOptionPane.showMessageDialog(null, "Conexão bem Sucedida","OK"
,JOptionPane.INFORMATION_MESSAGE);
} catch (ClassNotFoundException e) {
System.out.println (e.getMessage());
JOptionPane.showMessageDialog(null, "Não foi possível conetar ao banco","OK"
,JOptionPane.ERROR_MESSAGE);
}catch (SQLException e) {
System.out.println("SQLException: " + e.getMessage());
System.out.println("SQLState: " + e.getSQLState());
System.out.println("VendorError: " + e.getErrorCode());
JOptionPane.showMessageDialog(null, "Não foi possível conetar ao banco","OK"
,JOptionPane.ERROR_MESSAGE);
}catch(Exception e){
System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
JOptionPane.showMessageDialog(null, "Não foi possível conetar ao banco","OK"
,JOptionPane.ERROR_MESSAGE);
}
}
}