JXDatePicker

Olá Pesoal,
Tenho o seguinte código:

[code] PreparedStatement ps = con.prepareStatement("INSERT INTO lancamentosjuridico WHERE condominio = ? , servico = ?, " +
“hora = ? , data = ? , contato = ? , comentario = ?”);
ps.setString(1, (String) comboJurLancCondominio.getSelectedItem());
ps.setString(2, (String) comboJurLancServico.getSelectedItem());
ps.setString(3, cxTxtJurLancHorario.getText());
ps.setString(4, jxJurLancData.getDate());
ps.setString(5, cxTxtJurLancContatoCom.getText());
ps.setString(6, cxTxtJurLancComentarios.getText());

        ps.executeUpdate(); [/code]

Estou tentando inserir o conteúdo de um JXDatePicker em meu banco de dados, porém dá erro na linha:

O erro apresentado é o seguinte:

setString(int,java.lang.String) in java.sql.PreparedStatement cannot be applied to(int,java.util.Date)

Se alguém tiver alguma idéia,
Desde já agradeço
Vlw :smiley:

É claro que dará erro, e so ler a mensagem de erro, o correto seria você adicionar uma data.

.setDate(1,new java.sql.Date(jxJurLancData.getDate().getTime));

Dá seguinte maneira tenho certeza que ira funcionar.

Bom, vou corrigir seu erro e ja adiantar um proximo…

para voce inserir datas no PreparedStatement voce utiliza o metodo setDate, e nao o setString.

O erro que voce vai encontrar é que o PreparedStatement nao trabalha com a classe java.util.Date e sim com a classe java.sql.Date…

para voce “parsear” de uma classe pra outra precisa utilizar os milissegundos:

java.util.Date datautil = jxJurLancData.getDate();
java.sql.Date datasql = new java.sql.Date(datautil.getTime());
ps.setDate(4, datasql);

[quote=_Renatu]Bom, vou corrigir seu erro e ja adiantar um proximo…

para voce inserir datas no PreparedStatement voce utiliza o metodo setDate, e nao o setString.

O erro que voce vai encontrar é que o PreparedStatement nao trabalha com a classe java.util.Date e sim com a classe java.sql.Date…

para voce “parsear” de uma classe pra outra precisa utilizar os milissegundos:

java.util.Date datautil = jxJurLancData.getDate(); java.sql.Date datasql = new java.sql.Date(datautil.getTime()); ps.setDate(4, datasql); [/quote]
Bom, funcionou :smiley:
Mas, agora está caindo no catch com a seguinte mensagem:
no suitable driver
Sabe o que pode ser?
Vlw!

provavelmente algum problema com seu driver JDBC

qual banco voce usa? verifique se o driver está correto.

Olá…

vc pode converter a data para string…

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String data = sdf.format(jxJurLancData.getDate());
ps.setString(4, data);  

Não teste esse codigo pois nao estou em meu ambiente de desenvolvimento, mas axo q deve funcionar…

Diga depois se deu certo…

Abraços…

Concordo com o _Renato…

Tente baixar o driver mais novo do MySQL para testar…

[quote=_Renatu]provavelmente algum problema com seu driver JDBC

qual banco voce usa? verifique se o driver está correto.[/quote]
Meu banco é o MySQL.
Quando utilizo a conexão em outro evento, funciona perfeitamente.
A parte que faz a conexão é a seguinte:

try{ Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql//localhost:3306/gerpro"; String usuario = "root"; String senha = "admin"; Connection con; con = DriverManager.getConnection(url, usuario, senha);
e depois eu trato os catchs

Será que tem algo errado no código?
Porque já olhei revisei e não achei nada de errado.
Mas se identificar alguma coisa, por favor me dê uma luz
Vlw!

Aparentemente seu código está normal…

Mas qual a versão do servidor MySQL vc está utilizando???

E qual a versão do driver…???

[quote=Fernandojdk]Aparentemente seu código está normal…

Mas qual a versão do servidor MySQL vc está utilizando???

E qual a versão do driver…???[/quote]
Tanto o servidor quanto o driver são 5.0

Manda o código da classe(se não for muito extenso :wink: ) da classe no qual o erro ocorre…

Na verdade eu utilizo um evento de um JButton para fazer a conexão.
Segue o evento:

[code] private void IncluirLancamentosJuridico(java.awt.event.ActionEvent evt) {
try{
Class.forName(“com.mysql.jdbc.Driver”);
String url = “jdbc:mysql//localhost:3306/gerpro”;
String usuario = “root”;
String senha = “admin”;
Connection con;
con = DriverManager.getConnection(url, usuario, senha);
PreparedStatement ps = con.prepareStatement("INSERT INTO lancamentosjuridico WHERE condominio = ? , servico = ?, " +
“hora = ? , data = ? , contato = ? , comentario = ?”);
ps.setString(1, (String) comboJurLancCondominio.getSelectedItem());
ps.setString(2, (String) comboJurLancServico.getSelectedItem());
ps.setString(3, cxTxtJurLancHorario.getText());
java.util.Date datautil = jxJurLancData.getDate();
java.sql.Date datasql = new java.sql.Date(datautil.getTime());
ps.setDate(4, datasql);
ps.setString(5, cxTxtJurLancContatoCom.getText());
ps.setString(6, cxTxtJurLancComentarios.getText());

        ps.executeUpdate();     
          
        con.close();     
            JOptionPane.showMessageDialog(null, "Lançamento incluido com sucesso!","Mensagem do Programa",JOptionPane.INFORMATION_MESSAGE);     
    }catch (ClassNotFoundException e ){     
            JOptionPane.showMessageDialog(null, "Falha na conexão.\n" + e.getMessage());     
                e.printStackTrace();     
    }catch (SQLException e){     
            JOptionPane.showMessageDialog(null, "Erro na inclusão.\n" + e.getMessage(),     
                "Mensagem do Programa",JOptionPane.ERROR_MESSAGE);     
    }

}[/code]

Saca só… Verifique se o driver está incluido na sua classpath…

Pelo que pesquisei, esse erro ocorre com varias pessoas quando o java não consegue carregar a classe do driver…

Tente realizar o download mais uma vez do driver para testar se o seu não está corrompido…

Olha…

Tente remover a instrucao que utiliza java.sql.Date e rode o programa para ver se o driver funciona normalmente…
Caso de certo, vc já saberá que o problema seria na utilizacao desta classe…

Daí vc tenta o exemplo de parsear para string q eu citei acima…

Tenho que fazer algum import?
Pois, o compilador está perguntando pela classe SimpleDateFormat

[quote=Fernandojdk]Saca só… Verifique se o driver está incluido na sua classpath…

Pelo que pesquisei, esse erro ocorre com varias pessoas quando o java não consegue carregar a classe do driver…

Tente realizar o download mais uma vez do driver para testar se o seu não está corrompido…[/quote]
O driver está corretamente incluido no CLASSPATH,
Uma vez que consigo conectar atravez de outros eventos
somente neste tá dando erro.

Cara, e peço desculpas por tá te importunando.
Vlw!

import java.util.*;

Tente fazer assim(só uma dica :lol: ):

[code]
private void IncluirLancamentosJuridico(java.awt.event.ActionEvent evt) {
try{
Class.forName(“com.mysql.jdbc.Driver”);
String url = “jdbc:mysql//localhost:3306/gerpro”;
String usuario = “root”;
String senha = “admin”;
Connection con;
con = DriverManager.getConnection(url, usuario, senha);
}catch (ClassNotFoundException e ){
JOptionPane.showMessageDialog(null, “Falha na conexão.\n” + e.getMessage());
e.printStackTrace();
return;
}
try {
PreparedStatement ps = con.prepareStatement("INSERT INTO lancamentosjuridico WHERE condominio = ? , servico = ?, " +
“hora = ? , data = ? , contato = ? , comentario = ?”);
ps.setString(1, (String) comboJurLancCondominio.getSelectedItem());
ps.setString(2, (String) comboJurLancServico.getSelectedItem());
ps.setString(3, cxTxtJurLancHorario.getText());
//A parte 4 do ps eu comentei só para testar…
ps.setString(5, cxTxtJurLancContatoCom.getText());
ps.setString(6, cxTxtJurLancComentarios.getText());

        ps.execute();     
          
        con.close();     
        JOptionPane.showMessageDialog(null, "Lançamento incluido com sucesso!","Mensagem do Programa",JOptionPane.INFORMATION_MESSAGE);     

}catch (SQLException e){
JOptionPane.showMessageDialog(null, “Erro na inclusão.\n” + e.getMessage(),
“Mensagem do Programa”,JOptionPane.ERROR_MESSAGE);
}
}[/code]

Tente dessa forma para tentar localizar o erro… Diga o que foi retornado…
Vc esta utilizando qual IDE?

Tentei com o:
import java.util.*;
Não deu certo, então tentei com o:
import java.text.SimpleDateFormat;
Funcionou, porém continua dando a mesma mensagem
No Suitable driver
O que será que ainda pode está errado?

Tentei da maneira que me falou:
retirei o ps.setString(4…
porém continua com o mesmo erro.
será que há necessidade de fazer com outro campos?

Quanto ao IDE, utilizo o NetBeans.