User
Junho 15, 2009, 2:09pm
#1
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
User
Junho 15, 2009, 3:04pm
#3
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
User
Junho 15, 2009, 3:43pm
#5
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)
User
Junho 15, 2009, 4:46pm
#6
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"));