Olá pessoal
Tenho um jinternalFrame onde tenho um campo data do tipo date ( no java e no banco) e salvo no banco de dados ( SQL Server 2008 ). Quando clico no botão todos, aparece na jtable todas as datas que estão no banco já formatadas conforme: ( dd/MM/yyyy ).
Uso o método mouseClicked() onde ao clicar em alguma linha da jtable que consta uma data, aparece no campo data a respectiva data selecionada na jtable.
No entanto, estou com problema pois algumas datas aparecem invertidas pois se na jtable está 01/07/2011 ao clicar sobre ela, ela aparece no campo como 07/01/2011.
Obs: o campo Data não é jTextField ou jFormattedTextField, é um JDataChooser ( um componente adicionado à paleta do NetBeans do JCalendar )
Segue codificação:
No SQL Server:
create table data
(
data date
)
No java:
private Date data;
...construtor...
...sets e gets...
Classe DAO:
public class PessoaFisicaDAO {
SimpleDateFormat formataData = new SimpleDateFormat("dd/MM/yyyy");
Inclui a data no banco:
public boolean IncluirPessoaFisica(Teste objPessoa) throws SQLException{
Conexao conexao = new Conexao();
PreparedStatement pstmt = conexao.getConexao().prepareStatement("Insert into data (data) values (?)");
pstmt.setTimestamp(1, new java.sql.Timestamp(objPessoa.getData().getTime()));
int registros = pstmt.executeUpdate();
if(registros < 1){
return true;
}
else
return false;
}
Traz os dados do banco para a jtable
public Vector PesquisarPessoaFisicaTodos() throws SQLException
{
Conexao conexao = new Conexao();
Vector linhas = new Vector();
PreparedStatement pstmt = conexao.getConexao().prepareStatement("SELECT data from data ");
ResultSet rs = pstmt.executeQuery();
while(rs.next())
{
Teste objPessoa = new Teste();
objPessoa.setData(rs.getDate("data"));
Vector novalinha = new Vector();
novalinha.addElement(formataData.format(objPessoa.getData()));
//novalinha.addElement((objPessoa.getData())); // percebi que ao habilitar essa linha ( e desabilitar a linha de cima ) resolve ao trazer a data da table para o campo mas na table fica sem formatação, no estilo "yyyy/MM/dd"
linhas.addElement(novalinha);
}
return linhas;
}
e por fim, o método que leva a data ( que está na linha selecionada da jtable ) para o campo “Data”
private void jtabletesteMouseClicked(java.awt.event.MouseEvent evt) {
try {
java.util.Date data_banco3 = new java.util.Date((jtableteste.getModel().getValueAt(jtableteste.getSelectedRow(), 0).toString().replace("-","/")));
Preenchendo o campo data:
Data.setDate((data_banco3));
}
catch(Exception erro) {
System.out.println("erro ao converter a data do banco: " + erro.getMessage());
}
}
Obrigado a todos