[Resolvido]JDBC e insert no banco

23 respostas
A

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

F

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

A

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)
F

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?

A

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());
F

Tente trocar o

por

A

Da o mesmo erro de antes.

A

Alguem Por favor !!!

J
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);
A

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
J

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

A

adicionei sim olha ai na lib


J

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

F

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

A

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");
			}
	}
}
J

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…

J

Teu catch pode ficar melhor se você fizer assim

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

A

Tentei e da o mesmo erro

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

aff`s :frowning:

J

Opa, mais uma coisa:
Isso

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

A

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.

J

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

A

pooo valeu ai, muito obrigado pela ajuda.

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

J

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

Blz?

A

po valeu vei.

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