Como inserir um valor do tipo date no postgres acessando com java?

Ola estou usando java para acesar postgres versão postgresql-8.3.7-1-windows.exe
Tento cadastrar uma data assim:

String sql = "INSERT INTO tabeladata(data) VALUES(?);
try{ 
     CallableStatement cstmt = ......
     cstmt.setString(1,sdf.format("15/06/2009"));
      ..........
}

Ocorre erro:
org.postgresql.util.PSQLException: ERROR: column “data” is of type date but expression is of type character varying

Tem que prestar atenção se o campo é uma data, você deve passar uma data, outra coisa o CallableStatement é para chamar procedures e não executar SQL, para tal utilize a PreparedStatement

Thiago legal pela dica do PreparedStatement

tenho o campo do tipo data assim:
java.util.Date data1 = sdf.parse(“15/06/2009”);

se fazer assim:

pstmt.setDate(1,(data1));

tem esse erro no código por isso tentei com setString(…)

  • The method setDate(int, Date) in the type PreparedStatement is not applicable for the arguments (int, Date)
    Na verdade pede java.sql.Date porem não da para usar com
    java.text.SimpleDateFormat sdf

tem uma ideia de omo fazer?

Gostaria de usar como String e não como data, somente ao gravar no banco passar para data.

Tente desta forma:

ps.setDate(1, new java.sql.Date(("sua java.util.Date").getTime()));

flws

Meu codigo ta assim: (tentei assim)

[code]
String sValue = “15/06/2009” ;
java.sql.Date dtValue = java.sql.Date.valueOf(sValue);

	try {
		String sql = "INSERT INTO tbl_bem(tombamento,descricao,data,valor)VALUES(?,?,?,?)";
		PreparedStatement  pstmt = getCon().prepareStatement(sql);
		pstmt.setInt(1,((Bem) objeto).getTombamento());
		pstmt.setString(2,((Bem) objeto).getDescricao());
		pstmt.setDate(3, dtValue);
		pstmt.setDouble(4,((Bem) objeto).getValor());
		pstmt.executeUpdate();
		pstmt.close();
		System.out.println("Valores inseridos com sucesso na tbl_bem");
	} [/code]

No codigo java nao da ero
Erro que da na pg
exception

java.lang.IllegalArgumentException
java.sql.Date.valueOf(Date.java:103)
com.br.dao.bem.PostgresBemDao.incluir(PostgresBemDao.java:31)
com.br.entidade.Bem.incluir(Bem.java:20)
com.br.controle.CtrlIncluirBem.doPost(CtrlIncluirBem.java:40)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Bom pessoal assim da
String sValue = “2009-06-16” ;
java.sql.Date dtValue = java.sql.Date.valueOf(sValue);

Ufa

interessane que no Oracle gravo como string sem problema

Ja tive esse problema tb, há um tempo atras…
Foi um Saco pra resolver

Fiz da seguinte maneira no mysql:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost/exemploJdbc", "root", "");

String sql = "insert into contatos" + "(nome,email,endereco,dataNascimento)"+"values(?,?,?,?)";
PreparedStatement stmt = con.prepareStatement(sql);

stmt.setDate(4, Date.valueOf("1984-10-23"));