[quote=RafaelCN]Boa Tarde galera, bom vim aqui pra tirar uma dúvida que tenho a alguns dias. Estou fazendo uma aplicação junto a um Banco de dados (MySQL), vocês até podem pensar que deveria ter postado em outra área mas é tudo integrado, então vamos lá!
A aplicação consiste em uma simples “lista telefônica”
Onde no JTextField (1) que é o mais pequeno, vou colocar o telefone, e ele vai fazer o cadastro desse telefone no banco de dados, a minha dúvida é como passar o número para o banco de dados como parâmetro? Ele também vai ter a opção de buscar número, mas isso fica inválido nesse momento já que eu irei usar só o “Cadastrar telefone”. Bom a dúvida sobre o GUI é que eu vou usar um ActionListener, quando apertar ele vai cadastrar, vou passar o código fonte para melhor entendimento:
[code] public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if(o == jb2) {
try {
incluir();
}catch (SQLException e1) {
System.out.println(e1.getMessage());
e1.printStackTrace();
}
}
}
public void incluir() throws SQLException {
Connection cn = Conexao.getConnection();
Statement sn = cn.createStatement();
String q = "";
q += "insert into table_1(telefone_1)";
q += "values ()";
sn.executeUpdate(q);
jl3.setText("Cadastrado!");
}[/code]
Para ficar mais focado, tirei a outra parte do código. Como podem ver, toda vez que eu clicar no jb2 ele irá cadastrar o número que eu defini em values:
String q = "";
q += "insert into table_1(telefone_1)";
q += "values (81487540)"; //não é meu telefone ;p
sn.executeUpdate(q);
Eu queria saber como passar algum parâmetro para a função values?!
Exemplificando, eu irei escrever um telefone no JTextField e ele ira pegar esse valor e cadastrar no banco de dados, mas ainda não sei como “copiar” o valor do JTextField e passar como parâmetro para a função values?
Se quiserem o resto do código fonte só avisar que eu posto ele todo! ;)[/quote]
Eu sou iniciante em Java, então é bem provável que alguma coisa esteja errada…
Mas quando vou utilizar conexão com BD de forma direta faço assim…
Connection conexao = null; //Sempre criar conexao fora do try
try {
Class.forName("com.mysql.jdbc.Driver");
//Após o "mysql" vc deve colocar o caminho do seu BD, aqui eu deixei o padrão
// como se o BD estivesse na máquina local
conexao = DriverManager.getConnection
("jdbc:mysql://localhost:3306/table_1","usuario", "senha");
PreparedStatement executorDeComandos =
conexao.prepareStatement(
"insert into table_1 (telefone_1) " +
"values ('"+seuTextField.getText()+"')");
int retorno = executorDeComandos.executeUpdate();
if (retorno == 1){
JOptionPane.showMessageDialog(null, "Telefone cadastrado com sucesso!");
} else {
JOptionPane.showMessageDialog(null, "Telefone não cadastrado!");
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Erro ao cadastrar o telefone.");
} finally{
try {
conexao.close();
} catch (SQLException e2) {
e2.printStackTrace();
}
}
O melhor é criar uma outra classe para fazer a conexão;
public class BancoDeDados {
private Connection conexao;
private PreparedStatement executorDeComandos;
public PreparedStatement abrirConexaoBanco(String comando){
try {
Class.forName("com.mysql.jdbc.Driver");
conexao = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/table_1", "usuario", "senha");
executorDeComandos = conexao.prepareStatement(comando);
} catch (Exception e) {
e.printStackTrace();
}
return executorDeComandos;
}
public void fecharConexao(){
try {
conexao.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
dai quando for fazer a conexão, faz assim;
BancoDeDados bancoDeDados = new BancoDeDados();
PreparedStatement executorDeComandos = bancoDeDados.
abrirConexaoBanco(
"insert into table_1 (telefone_1) " +
"values ('"+seuTextField.getText()+"')");
try {
ResultSet retorno = executorDeComandos.executeQuery();
bancoDeDados.fecharConexao();
} catch (Exception e) {
e.printStackTrace();
}
Só espero que esteja tudo certo x3