javakid
Fevereiro 28, 2008, 8:12am
#1
pessoal,
tenho uma tela de autenticação para o banco,
e quero passar os parametros de conexão para minha classe de conexao…
observem meu codigo:
[code]
public static Connection getConnectionTarget() throws SQLException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@"+ con.getHost() +":"+ con.getPort() +":"+ con.getSID()+"",con.getUsername(),con.getPassword());
} catch (ClassNotFoundException e) {
throw new SQLException(e.getMessage());
}
}[/code]
agora a action do botão:
[code]
public void okButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
Conn con = new Conn();
con.setUsername(textFieldUsername.getText());
con.setPassword(textFieldPassword.getPassword().toString());
con.setHost(textFieldHost.getText());
con.setPort(textFieldPort.getText());
con.setSID(textFieldSID.getText());
ConnectionFactory connection = new ConnectionFactory();
connection.getConnectionTarget();
} catch (SQLException e) {
e.printStackTrace();
}
}[/code]
como faço para que os dados da minha action entrem na minha ConnectionFactory ?
obrigado
Eu faco um pouco diferente do seu :
A Factory eu fiz assim :
import java.sql.*;
import org.apache.commons.logging.impl.SimpleLog;
public class ConnFactory {
public static Connection openConnection(String username,
String password, String host, String db ) throws SQLException {
Connection conn = null;
SimpleLog log = new SimpleLog("ConnFactory.class");
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://" + host + "/" + db + "?user=" + username +
"&password=" + password);
} catch (ClassNotFoundException e) {
log.error("Class not found", e);
}
return conn;
}
}
Para connectar :
Connection con = ConnFactory.openConnection(user, password, host, db);
Acho que no evento do botao vc poderia pegar os valores digitas nos textfields e passar para esse metodo.
//Daniel
javakid
Fevereiro 28, 2008, 8:39am
#3
entendi…
passei os parametros agora!
só uma duvida agora…
ta dando denied… eu faço assim mesmo pra passar uma senha ?
con.setPassword(textFieldPassword.getPassword().toString());
nao precisa do toString()
//Daniel
javakid
Fevereiro 28, 2008, 8:50am
#5
nao nao… é um JPasswordField ( pra não mostrar a senha )
textFieldPassword = new JPasswordField(20);
con.setPassword(textFieldPassword.getPassword().toString());
eu adicionei o metodo toString, justamente pq la na minha classe Conn, o objeto Password é String
era pra ta certo não ? pelo menos em teoria…
Entao, tira o toString.
Vc vai ter que mudar o metodo openConnection ao inves de recever String password receber char[] password.
ou entao vc da um jeito de transformar esse char[] pra String e depois passar pro metodo de conexao.
fazendo String.copyValueOf(password)
con.setPassword(String.getValueOf(textFieldPassword.getPassword());
javakid
Fevereiro 28, 2008, 9:13am
#7
então é isso aí!
o meu getPassword retorna um char[], daí transformo ele pra String!
con.setPassword(String.copyValueOf(textFieldPassword.getPassword()));
beleza!
Valew Daniel!
agora quebrando cabeça: vou salvar essa conexão! pra poder fazer um monte de coisa com ela ainda…
ela fica setada lá enquanto meu programa todinho roda ?
existe algum metodo pra isso !?