[Resolvido]JDBC e insert no banco

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

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

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)

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?

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

Tente trocar o

por

Da o mesmo erro de antes.

Alguem Por favor !!!

Tenta assim:

[code]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);
[/code]

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

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

adicionei sim olha ai na lib


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

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

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

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…

Teu catch pode ficar melhor se você fizer assim

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

Tentei e da o mesmo erro

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

aff`s :frowning:

Opa, mais uma coisa:
Isso

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

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.