Como resolver o problema de data entre o MySQL e Java?

:frowning: Olá carsos , amigos…
Gostaria q algum colega mais interado em Java me ajudem se possível… Já li um monte de respostas… parecidas com o meu caso, porém, não se enquandram e também não entendi bem aonde colocar a solução… em q trecho do código pra ser mais exato…
Se alguem puder dar uma olha no código… ai vai a parte q + me interessa…

//arquivo:--> Documento.java


package modelo;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Documento {
	private int controle;
	private Date entrada;
	private String numero_doc;
	private Date data_doc;
	private String origem;
	private String descricao;
	private Date saida;
	private String destino;
	
	public String getIncluir(){
		String s="";
		try{
			Class.forName("com.mysql.jdbc.Driver").newInstance();
		}catch(Exception e){
			return ("Driver não carregado.");
		}

		try{
			Connection conexao=DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/meubanco","root","1111");
			PreparedStatement sql=conexao.prepareStatement(
				"insert into tbdocs(controle, entrada, data_doc, numero_doc, origem, descricao, destino, saida) values (?,?,?,?,?,?,?,?)");
			sql.setInt(1, controle);
			sql.setString (2, entrada.toString());
			sql.setDate(3, data_doc);
			sql.setString(4, numero_doc);
			sql.setString(5, origem);
			sql.setString(6, descricao);
			sql.setDate(7, saida);
			sql.setString(8, destino);
			sql.executeUpdate();
				s=" Documento Incluído com sucesso!!! ";
	
		}catch(SQLException e){
			s=e.getMessage();
		}
		return s;
	}
...

-------------------------------------------------------------------------------------------------------------


//arquivo:--> incluir1.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Incluir</title>
</head>
<body>
<%@include file="menu.jsp"%>
	<form action="incluir2.jsp"method="post">	
	Controle:<input name="controle"><br>
	Entrada:<input name="entrada"><br>
	Data_doc:<input name="data_doc"><br>
	Numero:<input name="numero_doc"><br>
	Origem:<input name="origem"><br>
	Descrição:<input name="descricao"><br>
	Saida:<input name="saida"><br>
	Destino:<input name="destino"><br>
	<input type="submit" value="Enviar">
	<input type="reset" value="Limpar">
	</form>
</body>
</html>
-------------------------------------------------------------------------------------------------------

//arquivo:--> incluir2.jsp

<jsp:useBean id="doc" class="modelo.Documento"></jsp:useBean>
<jsp:setProperty property="*" name="doc" />
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="modelo.Documento"%>
<%@include file="menu.jsp"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Inclusão de Dados...</title>
</head>
<body>
<jsp:getProperty name="doc" property="incluir" />
</body>
</html>
-------------------------------------------------------------------------------------------------------
ERROR:

Unable to convert string "2008-03-28" to class "java.sql.Date" for attribute "saida": Property Editor not registered with the PropertyEditorManager 
at org.apache.jasper.runtime.JspRuntimeLibrary.getValueFromPropertyEditorManager(JspRuntimeLibrary.java:887)

-------

Agardo resposta e agradesço desde já a todos…

:lol:

Cara, o problema está aqui: <jsp:setProperty property="*" name="doc" />
Essa tag NAO consegue fazer todo tipo de conversão. Apenas para os primitivos e mais alguns somente. Assim ele não irá converter a String saida (input) para o objeto saida tipo Date.
Sugiro que você transforme o objeto saida tipo Date para String. E Depois você usa a classe java.text.SimpleDateFormat para realizar a conversão para em seguida enviar para o SQL.

Ao invés de usar java.sql.Date na sua classe Document, use java.util.Date.

Se em algum momento você precisar especificamente de um java.sql.Date, use algo do tipo:

new java.sql.Date(dataOriginal.getTime())

Caro JMoreira…, se entendi será q posso utilizar uma tag para cada property do objeto? seria isto…? e se entendi bem faei a conversão na própria tag???, Desculpem-me pela ignorância + to apanhando um bocado pois venho Delphi… tô tentando seguir o padrão JavaBens e OO… ainda não pequei bem onde no código efetuo certos ajustes…

Grato pela atenção de todos…
Espero em breve poder retribir a comunidade… Tks!!! :slight_smile:

Você poderá utilizar uma tag para cada property, mas não irá fazer diferença pois a tag <jsp:setProperty property="*" name=“doc” /> não irá converter String para Objeto Date. Assim, você não tem alternativa, se você quiser utilizar essa abordagem de recuperar TODOS os atributos do FORM automaticamente através do property="*". Além dos tipos primitivos, que a tag consegue converter automaticamente, todos os outros atributos do form devem serem do tipo String. Isso somente lhe poupará o trabalho de fazer req.getParameter(“xxx”) para cada campo. Como lhe disse antes, você terá que fazer as conversões adequadamente no seu Controle ou na sua Regra de negócio.

Uma outra abordagem que se utiliza muito, é utilizar o pacote commons-beanutils.jar da Apache. Inclusive o Struts utiliza esse cara para fazer examente isso que você esta querendo, ou seja, recuperar os atributos da requisição e converte-los automaticamente para dentro do Bean. Mas ai seria uma outra abordagem, ou seja, um outro caminho para chegar no mesmo lugar.

Cara, programar para Web utilizando Java, tem uma curva de aprendizado muito forte. Tenha paciência e, persista pesquisando e estudando.

:slight_smile: Valew cara… tks!!!
Fiz o seguinte… mudei os campos dates todos p/ Strings… ajustei o codigo… blz funcionou…
farei alguns ajustes na formatação de texto para melhorar a parência… enquanto isto vou estudar esta curva de entendimento do Java… é bom apanhar um porco… no final vele a pena… o aprendizado…
Estou testando as ferramentas e em que casos se encandram… aos poucos vou apredendo alguma coisa…
Obrigado camarada… Valew!!! :lol:

  1. new java.sql.Date(dataOriginal.getTime())