[Resolvido]JDBC e insert no banco

23 respostas
afonso_java

Nao consigo dar o insert no banco, me desculpem sou iniciante.

Qual seria a solução? :?

se rodar na classe direto ele conecta e da o aviso se colocar alguma forma de saida ( so pra confirmar)

public class conecta_mysql {
     public String driver = "com.mysql.jdbc.Driver";
     public String url = "jdbc:mysql://localhost/siscad";
	 public String user = "root";
	 public String senha = "";
	 public Connection conectar;
	 public	Statement statement ;
	 public	ResultSet resultSet;
	
	
	
}

aqui to usando a classe do form e tentando puxa a conexao e dar um insert.

public void actionPerformed(ActionEvent e) 
	{
		
		if (e.getSource() == botao_gravar)
		{	
			try
			{			
			Class.forName(mysql_con.driver);
			
			mysql_con.conectar = DriverManager.getConnection(mysql_con.url, mysql_con.user, mysql_con.senha);
			String sql = "insert into cliente(Nome,data_nasc,cpf,rg,fone,endereco) values (?,?,?,?,?,?)";
			
			
			PreparedStatement mysqPreparedStatement = this.mysql_con.conectar.prepareStatement(sql);
			
			this.mysql_con.statement.setString(1,txt_Nome.getText());
			this.mysql_con.statement.setString(2,txt_dataNasc.getText());
			this.mysql_con.statement.setString(3,txt_cpf.getText());
			this.mysql_con.statement.setString(4,txt_rg.getText());
			this.mysql_con.statement.setString(5,txt_fone.getText());
			this.mysql_con.statement.setString(6,txt_end.getText());
			
			this.mysql_con.statement.executeUpdate(sql);
			
			}
			catch (SQLException sqlException) {
				JOptionPane.showMessageDialog(null, "deu pau");
			}
	}
	
		if (e.getSource() == botao_novo)
		{
			txt_Nome.setText("");
			txt_cpf.setText("");
			txt_dataNasc.setText("");
			txt_fone.setText("");
			txt_rg.setText("");
			txt_end.setText("");
		}
	}

23 Respostas

felipeaqueiroz

Olá,
Qual a mensagem de erro que aparece? A conexão é realizada com sucesso?

afonso_java

A conexao direta na classe de conexao realiza normal

o erro eh esse.

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problems: 
	The method setString(int, String) is undefined for the type Statement
	The method setString(int, String) is undefined for the type Statement
	The method setString(int, String) is undefined for the type Statement
	The method setString(int, String) is undefined for the type Statement
	The method setString(int, String) is undefined for the type Statement
	The method setString(int, String) is undefined for the type Statement

	at Cliente.Formulario_Cliente.actionPerformed(Formulario_Cliente.java:156)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
felipeaqueiroz

Não tenho certeza, mas parece que o erro está em alguma parte no método setString…

Você já testou a sua string de inserção

no console do mysql para ver se funciona?

afonso_java

ja testei passar os valor pelo dbtreeview num insert e foi normal

Mas em livros eu vi que se define “?” e depois passa por ali
this.mysql_con.statement.setString(1,txt_Nome.getText());
o numero 1 define o primeiro ponto e assim por diante.

String sql = "insert into cliente(Nome,data_nasc,cpf,rg,fone,endereco) values (?,?,?,?,?,?)";
			
			
			PreparedStatement mysqPreparedStatement = this.mysql_con.conectar.prepareStatement(sql);
			
			this.mysql_con.statement.setString(1,txt_Nome.getText());
			this.mysql_con.statement.setString(2,txt_dataNasc.getText());
			this.mysql_con.statement.setString(3,txt_cpf.getText());
			this.mysql_con.statement.setString(4,txt_rg.getText());
			this.mysql_con.statement.setString(5,txt_fone.getText());
			this.mysql_con.statement.setString(6,txt_end.getText());
felipeaqueiroz

Tente trocar o

por

afonso_java

Da o mesmo erro de antes.

afonso_java

Alguem Por favor !!!

jamirdeajr
Tenta assim:
PreparedStatement mysqPreparedStatement = this.mysql_con.conectar.prepareStatement(sql);  
              
mysqPreparedStatement.setString(1,txt_Nome.getText());  
mysqPreparedStatement.setString(2,txt_dataNasc.getText());  
mysqPreparedStatement.setString(3,txt_cpf.getText());  
mysqPreparedStatement.setString(4,txt_rg.getText());  
mysqPreparedStatement.setString(5,txt_fone.getText());  
mysqPreparedStatement.setString(6,txt_end.getText()); 
mysqPreparedStatement.executeUpdate(sql);
afonso_java

po vei sumiu o erro do setString
mas gerou outro problema nao ta carregando o driver.

Class.forName(mysql_con.driver);
Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem: 
	Unhandled exception type ClassNotFoundException
jamirdeajr

Você incluiu o .jar do driver mysql na tua aplicação?

Dá uma olhada nestes posts também:
http://www.guj.com.br/articles/7
http://www.guj.com.br/java/42115-conexao-mysql-com-java—driver-nao-encontrado

afonso_java

adicionei sim olha ai na lib


jamirdeajr

Versão 3.0xxx, antes troque por uma versão mais recente:
http://dev.mysql.com/downloads/connector/j/

felipeaqueiroz

O conector do mysql já está na versão 5
E também eu acho que nem precisa mais usar essa linha

afonso_java

nao deu certo ainda :frowning:

comentei o carregador do driver
e mesmo assim ele ta caindo la no catch

public void actionPerformed(ActionEvent e) 
	{
		
		if (e.getSource() == botao_gravar)
		{	
			try
			{			
			
                        //aqui ele fica marcado  
                       Class.forName(mysql_con.driver);
			
			mysql_con.conectar = DriverManager.getConnection(mysql_con.url, mysql_con.user, mysql_con.senha);
			String sql = "insert into cliente(Nome,data_nasc,cpf,rg,fone,endereco) values (?,?,?,?,?,?)";
			
			
			
			PreparedStatement mysqlPreparedStatement = this.mysql_con.conectar.prepareStatement(sql);  
			
			mysqlPreparedStatement.setString(1,txt_Nome.getText());
			mysqlPreparedStatement.setString(2,txt_dataNasc.getText());
			mysqlPreparedStatement.setString(3,txt_cpf.getText());
			mysqlPreparedStatement.setString(4,txt_rg.getText());
			mysqlPreparedStatement.setString(5,txt_fone.getText());
			mysqlPreparedStatement.setString(6,txt_end.getText());
			
			
			mysqlPreparedStatement.executeUpdate(sql);
			
			// E R R A D O
			//PreparedStatement mysqPreparedStatement = this.mysql_con.conectar.prepareStatement(sql);
			//this.mysql_con.statement.setString(1,txt_Nome.getText());
			//this.mysql_con.statement.setString(2,txt_dataNasc.getText());
			//this.mysql_con.statement.setString(3,txt_cpf.getText());
			//this.mysql_con.statement.setString(4,txt_rg.getText());
			//this.mysql_con.statement.setString(5,txt_fone.getText());
			//this.mysql_con.statement.setString(6,txt_end.getText());
			//this.mysql_con.statement.executeUpdate(sql);
			
			
			
			}
			catch (SQLException sqlException) {
				JOptionPane.showMessageDialog(null, "deu pau");
			}
	}
}
jamirdeajr

Em algum lugar na inicialização da tua aplicação você está executando um comando assim?

Você pode fazer um teste, substitua o seguinte:

por

e veja se continua dando exceção na mesma linha…

jamirdeajr

Teu catch pode ficar melhor se você fizer assim

catch (SQLException sqlException) { JOptionPane.showMessageDialog(null, "deu pau:"+ sqlException.getMessage()); }

afonso_java

Tentei e da o mesmo erro

o catch ta acusando os (?,?,?,?,?) do insert.

aff`s :frowning:

jamirdeajr

Opa, mais uma coisa:
Isso

Troque por: (sem o sql, ele já foi “preparado”)

afonso_java

po vei agora deu certo valeu obrigadao mesmo.

mais tive que colocar no Jtext a data invertida “yyyy”-“mm”-“dd”

fora essa duvida.

como colocar a mascara no campo?

tipo pra quando eu digitar colocar soh os numeros.

jamirdeajr

Bom, não entendo muito de JText… mas dá uma olhada aqui:
http://www.guj.com.br/java/26103-mascara-em-um-jtextfield

afonso_java

pooo valeu ai, muito obrigado pela ajuda.

como que faz pra encerrar o topico, colocar como resolvido aqui?

jamirdeajr

Você pode editar o assunto da primeira mensagem do tópico, adicionando a expressão [Resolvido]

Blz?

afonso_java

po valeu vei.

Criado 27 de agosto de 2011
Ultima resposta 27 de ago. de 2011
Respostas 23
Participantes 3