Por que meu banco não conecta?

9 respostas
S

Aqui está o código que eu uso para conectar ao banco e também o insert que eu quero realizar na tabela.
Pelo que eu li na internet deveria estar tudo OK, mas meu banco não conecta, sempre volta a mensagem "Unable to connect to database."

try {
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            String banco = "testetcc"; //Nome do Banco criado
            String host = "localhost"; //Maquina onde está o banco
            String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão
            String usuario = "root"; //Usuário do banco
            String senha = "123456"; //Senha de conexão
            Statement stmt = null;
            Connection conn = null;            
            conn = DriverManager.getConnection(str_conn, usuario, senha);
            stmt = conn.createStatement();
            //Teste para adicionar dados
            String sql = "INSERT INTO funcionario (Cod_Funcionario"
            +" Nome"
            +" Endereco"
            +" CEP"
            +" Bairro"
            +" Cidade"
            +" Estado"
            +" Nacionalidade"
            +" Estado_Natu"
            +" Tel"
            +" Tel_Cel"
            +" RG"
            +" CPF"
            +" Funcao"
            +" E_Mail"
            +" Historico"
            +") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement pstmt = conn.prepareStatement(sql);

            pstmt.setInt(1,Integer.parseInt(txtCodFunc.getText()));
            pstmt.setString(2,txtNomeFunc.getText());
            pstmt.setString(3,txtEnderecoFunc.getText());
            pstmt.setString(4,"11");
            pstmt.setString(5,txtBairroFunc.getText());
            pstmt.setString(6,txtCidadeFunc.getText());
            pstmt.setString(7,"SP");
            pstmt.setString(8,txtNaturalFunc.getText());
            pstmt.setString(9,"SP");
            pstmt.setString(10,txtTelefoneFunc.getText());
            pstmt.setString(11,txtCelularFunc.getText());
            pstmt.setString(12,txtRGFunc.getText());
            pstmt.setString(13,txtCPFFunc.getText());
            pstmt.setString(14,txtCargoFunc.getText());
            pstmt.setString(15,txtEmailFunc.getText());
            pstmt.setString(16,"Sem Histórico");
            pstmt.execute();
            pstmt.close();
            //Fim do Teste
            JOptionPane.showMessageDialog(null, "Conectado!");
            stmt.close();
            conn.close();
        }
            catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Erro ao conectar ao banco de dados!");
        }

Qualquer coisa que precise a mais me avisem!

//-----EDIT-----
Editei meu antigo post pois o código estava errado e dando uma má formatação para a página!

9 Respostas

O

Opa blz?
Cola o erro que apareceu no console aqui pra gente.

String QueryString = "INSERT INTO funcionario ('Cod_Funcionario', 'Nome', 'Endereco', 'CEP', 'Bairro', 'Cidade', 'Estado', 'Nacionalidade', 'Estado_Natu', 'Tel', 'Tel_Cel', 'RG', 'CPF', 'Funcao', 'E_Mail', 'Historico') VALUES" + "(txtCodFunc.getText(),txtNomeFunc.getText(),txtEnderecoFunc.getText(),'11',txtBairroFunc.getText(),txtCidadeFunc.getText(),'SP',txtNaturalFunc.getText(),'SP',txtTelefoneFunc.getText(),txtCelularFunc.getText() ,txtRGFunc.getText(),txtCPFFunc.getText(),txtCargoFunc.getText(),txtEmailFunc.getText(),'Sem Histórico')";

Essa parte aqui com certeza tem erros :confused: ta mto ruim isso, ja viu como trabalhar usando o ?,?,?,? vc elimina os problemas causados pelas ’ " ’ " fica mto melhor. Vou colar um exemplo aqui pra você, tenta mudar usando o meu exemplo

public void adiciona(Contato contato) {
		try {
			String sql = "insert into contatos (nome, email, endereco, dataNascimento) values (?,?,?,?)";
			PreparedStatement stmt = connection.prepareStatement(sql);

			stmt.setString(1, contato.getNome());
			stmt.setString(2, contato.getEmail());
			stmt.setString(3, contato.getEndereco());
			stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));

			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
S

Assim, não aparece erro, a única coisa que aparece é o “Unable to connect to database.”

Vou tentar fazer do jeito que você mandou, e aliás, não tem erros, eu testei esse comando no SQL (só mudei os dados pelo .getText() do campo de texto que tiver ele)

R

bom meu class de conexao funfa da uma olhada aqui

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class ConectaBD {

	Connection c = null;
	private String driverName = "com.mysql.jdbc.Driver";
	private String bancoDeDados = "jdbc:mysql://localhost/locadora";
	private String user = "root";
	private String password = "123456";
	Statement stm;
	
	ConectaBD(){
		try{
			Class.forName(driverName);
			c = DriverManager.getConnection(bancoDeDados,user,password);
			stm = c.createStatement();	
			JOptionPane.showMessageDialog(null, "Conectado!");			
		}
		catch(SQLException e){  
		      e.printStackTrace();
		      JOptionPane.showMessageDialog(null, "Problemas de conexão com o banco de dados");
		} 
		catch(ClassNotFoundException e){
			e.printStackTrace();
		}
	}
}

da uma olhada ai :wink:

S
try {
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            String banco = "testetcc"; //Nome do Banco criado
            String host = "localhost"; //Maquina onde está o banco
            String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão
            String usuario = "root"; //Usuário do banco
            String senha = "123456"; //Senha de conexão
            Statement stmt = null;
            Connection conn = null;            
            conn = DriverManager.getConnection(str_conn, usuario, senha);
            stmt = conn.createStatement();
            //Teste para adicionar dados
            String sql = "INSERT INTO funcionario (Cod_Funcionario"
            +" Nome"
            +" Endereco"
            +" CEP"
            +" Bairro"
            +" Cidade"
            +" Estado"
            +" Nacionalidade"
            +" Estado_Natu"
            +" Tel"
            +" Tel_Cel"
            +" RG"
            +" CPF"
            +" Funcao"
            +" E_Mail"
            +" Historico"
            +") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement pstmt = conn.prepareStatement(sql);

            pstmt.setInt(1,Integer.parseInt(txtCodFunc.getText()));
            pstmt.setString(2,txtNomeFunc.getText());
            pstmt.setString(3,txtEnderecoFunc.getText());
            pstmt.setString(4,txtBairroFunc.getText());
            pstmt.setString(5,txtCidadeFunc.getText());
            pstmt.setString(6,"SP");
            pstmt.setString(7,txtNaturalFunc.getText());
            pstmt.setString(8,"SP");
            pstmt.setString(9,txtTelefoneFunc.getText());
            pstmt.setString(10,txtCelularFunc.getText());
            pstmt.setString(11,txtRGFunc.getText());
            pstmt.setString(12,txtCPFFunc.getText());
            pstmt.setString(13,txtCargoFunc.getText());
            pstmt.setString(14,txtEmailFunc.getText());
            pstmt.setString(15,"Sem Histórico");
            pstmt.executeUpdate();
            pstmt.close();
            //Fim do Teste
            JOptionPane.showMessageDialog(null, "Conectado!");
            stmt.close();
            conn.close();
        }
            catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Erro ao conectar ao banco de dados!");
        }

Bem, aí está meu novo código, utilizando preparedstatement, percebi que meu banco conecta, o erro está mesmo quando eu vou adicionar dados!
Dê me uma luz!

N

Está faltando vírgula entre os campos no sql:

String sql = "INSERT INTO funcionario (Cod_Funcionario" +", Nome" +", Endereco" +", CEP" +", Bairro" +", Cidade" +", Estado" +", Nacionalidade" +", Estado_Natu" +", Tel" +", Tel_Cel" +", RG" +", CPF" +", Funcao" +", E_Mail" +", Historico" +") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

S

Que vergonha essa vírgula ter passado desapercebida! Mas o erro persiste, mesmo com a vírgula, aqui vai o novo código:

try {
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            String banco = "testetcc"; //Nome do Banco criado
            String host = "localhost"; //Maquina onde está o banco
            String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão
            String usuario = "root"; //Usuário do banco
            String senha = "123456"; //Senha de conexão
            Statement stmt = null;
            Connection conn = null;
            conn = DriverManager.getConnection(str_conn, usuario, senha);
            stmt = conn.createStatement();
            //Teste para adicionar dados
            String sql = "INSERT INTO funcionario (Cod_Funcionario"
                    + ", Nome"
                    + ", Endereco"
                    + ", CEP"
                    + ", Bairro"
                    + ", Cidade"
                    + ", Estado"
                    + ", Nacionalidade"
                    + ", Estado_Natu"
                    + ", Tel"
                    + ", Tel_Cel"
                    + ", RG"
                    + ", CPF"
                    + ", Funcao"
                    + ", E_Mail"
                    + ", Historico"
                    + ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement pstmt = conn.prepareStatement(sql);

            pstmt.setInt(1, Integer.parseInt(txtCodFunc.getText()));
            pstmt.setString(2, txtNomeFunc.getText());
            pstmt.setString(3, txtEnderecoFunc.getText());
            pstmt.setString(4, txtBairroFunc.getText());
            pstmt.setString(5, txtCidadeFunc.getText());
            pstmt.setString(6, "SP");
            pstmt.setString(7, txtNaturalFunc.getText());
            pstmt.setString(8, "SP");
            pstmt.setString(9, txtTelefoneFunc.getText());
            pstmt.setString(10, txtCelularFunc.getText());
            pstmt.setString(11, txtRGFunc.getText());
            pstmt.setString(12, txtCPFFunc.getText());
            pstmt.setString(13, txtCargoFunc.getText());
            pstmt.setString(14, txtEmailFunc.getText());
            pstmt.setString(15, "Sem Histórico");
            pstmt.executeUpdate();
            pstmt.close();
            //Fim do Teste
            JOptionPane.showMessageDialog(null, "Conectado!");
            stmt.close();
            conn.close();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Erro ao conectar ao banco de dados!");
        }
N

Está faltando um insert pro CEP

pstmt.setString(3, txtEnderecoFunc.getText()); //??? Aqui você pulou pstmt.setString(4, txtBairroFunc.getText());

S

MUITO OBRIGADO!
Consegui conectar e adicionar as informações.
Vou explicar porque cometi esse erro:
Meu banco de dados foi feito por uma pessoa e as telas do programa por outra, a pessoa que fez a tela
esqueceu de colocar um textfield para que eu escrevesse o CEP, e dessa forma eu acabei não percebendo.

Novamente agradeço a todos que me ajudaram e desculpem o incomodo! :oops:

N

Estamos aqui todos pra se ajudar, ^^

Criado 9 de maio de 2010
Ultima resposta 10 de mai. de 2010
Respostas 9
Participantes 4