Não insere no banco de dados[RESOLVIDO]

bom galera estou com o mysql 5.1 , eclipse e tomcat…

a conexão me da sinal de que foi gravado … mas não insere nada no banco de dados…

DAO

[code]package br.com.calculadora;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class MemoriaDAO {
private Connection connection;

public MemoriaDAO(){
	try{
		this.connection = new ConnectionFactory().getConnection();
		System.out.println("Cai no construtor vazio");
	}catch (Exception e){
		// TODO : handle exception
	}
}
public void adiciona(Memoria memoria){
	try{
	String sql = "insert into memoria (memoria1,memoria2,memoria3,memoria4,memoria5) values(?,?,?,?,?)";

		PreparedStatement stmt = connection.prepareStatement(sql);

		// seta os valores
		//stmt.setInt(memoria.getIdmemoria(), 1);
		stmt.setString(1,memoria.getMemoria1());
		stmt.setString(2,memoria.getMemoria2());
		stmt.setString(3,memoria.getMemoria3());
		stmt.setString(4, memoria.getMemoria4());
		stmt.setString(5,memoria.getMemoria5());
	
		//stmt.execute();
		stmt.close();
		
		
		//System.out.println("Gravado!");
		
	}catch (SQLException e){
		throw new RuntimeException(e);
	}
}

}[/code]

classe memoria

[code]
package br.com.calculadora;

public class Memoria {

private String memoria1;
private String memoria2;
private String memoria3;
private String memoria4;
private String memoria5;

public String getMemoria1() {
	return memoria1;
}
public void setMemoria1(String memoria1) {
	this.memoria1 = memoria1;
}
public String getMemoria2() {
	return memoria2;
}
public void setMemoria2(String memoria2) {
	this.memoria2 = memoria2;
}
public String getMemoria3() {
	return memoria3;
}
public void setMemoria3(String memoria3) {
	this.memoria3 = memoria3;
}
public String getMemoria4() {
	return memoria4;
}
public void setMemoria4(String memoria4) {
	this.memoria4 = memoria4;
}
public String getMemoria5() {
	return memoria5;
}
public void setMemoria5(String memoria5) {
	this.memoria5 = memoria5;
}

}[/code]

ConnectionFactory …

[code]package br.com.calculadora;

import java.sql.*;

public class ConnectionFactory {

public Connection getConnection() throws ClassNotFoundException{
	System.out.println("Conectando ao banco");
	try{
	Class.forName("com.mysql.jdbc.Driver");
	return DriverManager.getConnection("jdbc:mysql://localhost:3306/calculadora", "root","1234");
	}catch (SQLException e){
		System.out.println("Erro na conexão");
		throw new RuntimeException(e);
	}
}

}[/code]

testando a inserção

package br.com.calculadora;
	public class TestaInsere {
		public static void main(String[] args) {
		// pronto para gravar
		Memoria memoria = new Memoria();
		
		
		//memoria.setIdmemoria(2);
		memoria.setMemoria1("ppk476");
		memoria.setMemoria2("gj89d");
		memoria.setMemoria3("dfgsd58gdsf");
		memoria.setMemoria4("ff447875fff");
		memoria.setMemoria5("rrr8888fs");
		// grave nessa conexão!!!
		MemoriaDAO minhadao = new MemoriaDAO();
		
		// método elegante

		minhadao.adiciona(memoria);
		System.out.println("Gravado!");
		}
		
}

MENSAGEM QUE APARECE NO CONSOLE

Conectando ao banco Cai no construtor vazio Gravado!

Falta vc chamar o executeUpdate do PreparedStatement no seu Dao

teria como me mostrar como seria …

estou tentando colocar o executeupdate e não consigo…

vlew yoshikichi

Na linha 31 você comentou:

         //stmt.execute(); 

*msg foi editada [/cde] para [/code]

Exception in thread "main" java.lang.RuntimeException: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'memoria3' at row 1 at br.com.calculadora.MemoriaDAO.adiciona(MemoriaDAO.java:35) at br.com.calculadora.TestaInsere.main(TestaInsere.java:19) Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'memoria3' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3564) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1364) at br.com.calculadora.MemoriaDAO.adiciona(MemoriaDAO.java:30) ... 1 more Conectando ao banco Cai no construtor vazio

agora deu este erro se não comentar o

stmt.execute();

vlew yoshikichi

[quote=gmsilva]Exception in thread "main" java.lang.RuntimeException: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'memoria3' at row 1 at br.com.calculadora.MemoriaDAO.adiciona(MemoriaDAO.java:35) at br.com.calculadora.TestaInsere.main(TestaInsere.java:19) Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'memoria3' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3564) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1364) at br.com.calculadora.MemoriaDAO.adiciona(MemoriaDAO.java:30) ... 1 more Conectando ao banco Cai no construtor vazio

agora deu este erro se não comentar o

stmt.execute();

vlew yoshikichi[/quote]

olha isso
http://www.guj.com.br/posts/list/140305.java

fiz uma pequena modificação aqui na dao

[code]package br.com.calculadora;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class MemoriaDAO {
private Connection connection;

public MemoriaDAO(){
		try {
			this.connection = new ConnectionFactory().getConnection();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block       
			e.printStackTrace();                              //aqui a modificação         
		}
}
public void adiciona(Memoria memoria){
	try{
	String sql = "insert into memoria (memoria1,memoria2,memoria3,memoria4,memoria5) values(?,?,?,?,?)";

		PreparedStatement stmt = connection.prepareStatement(sql);
		stmt.setString(1,memoria.getMemoria1());
		stmt.setString(2,memoria.getMemoria2());
		stmt.setString(3,memoria.getMemoria3());
		stmt.setString(4, memoria.getMemoria4());
		stmt.setString(5,memoria.getMemoria5());			
		stmt.execute();
		stmt.close();
		
	}catch (SQLException e){
		throw new RuntimeException(e);
	}
}

}[/code]

e também aumentei a quantidade de caracteres no banco de dados (varchar (10) para varchar(20)…

mto obrigado yoshikichi

resolvido

vlew