Utilizando tipo Date

Estou iniciando no Java agora e não estou sabendo como trabalhar com datas. Será que poderiam me ajudar???
Tenho um método chamado insereCliente:

public boolean insereCliente(Cliente c) throws Exception {

    String sql =    "INSERT INTO CLIENTE (ID, NOME, DT_INICIO, DT_FINAL) " +                            
                    "VALUES (?, ?, ?, ?)";
    
    sqlInsereCliente = connection.prepareStatement(sql);

    sqlInsereCliente.setInt(1, c.getId());
    sqlInsereCliente.setString(2, c.getNome());
    sqlInsereCliente.setDate(3, c.getDataInicio());
    sqlInsereCliente.setDate(4, c.getDataFinal());

            
    result = sqlInsereCliente.executeUpdate();        
            
    /**
    *Se for difirente de 0, efetuou a inclusão ok
    */
    if ( result != 0 ) 
        return true;
    else
        return false;    
    
}

Criei uma classe main com as instruções abaixo para testar a inclusão onde tentei passar os parâmetros, mas não estou conseguindo. Está dando erro com as datas.
No próprio método insereCliente, quando coloco sqlInsereCliente.setDate(3, c.getDataInicio()); já dá um erro!

Cliente c = new Cliente();

c.insereCliente(100, "JULIO", 01/02/2005, 10/02/2005");   <-- Como devem ser passadas as datas?

Qual o tratamento que devo fazer dentro do método insereCliente para o tratamento das datas?

Testei também, ao invés de passar para o método insereCliente o parâmetro cliente, passei um a um:

insereProjeto(int projeto, String nome, java.sql.Date dt_inicio, java.sql.Date dt_final)

Dessa forma, não deu erro dentro do método mas mesmo assim não consigo passar os parâmetros para testar.

Alguém poderia me ajudar com isso?

Vamos olhar o Javadoc…

O tipo java.sql.Date tem um método

static Date 	valueOf(String s)
          Converts a string in JDBC date escape format to a Date value.

E o “JDBC data escape format” é:

date escape format yyyy-mm-dd

Ou seja, para obter um java.sql.Date você pode usar valueOf, com o formato ano-mês-dia.

Isso quer dizer que você poderia ter feito algo como:

 c.insereCliente(100, "JULIO", java.sql.Date.valueOf("2005-02-01"), java.sql.Date.valueOf ("2005-02-10")) 

barbinha, no método setDate() do PreparedStatement você deve passar um java.sql.Date, que na verdade é uma subclasse de java.util.Date.

Para fazer o que quer, faça assim:

sqlInsereCliente.setDate(3, new java.sql.Date(c.getDataInicio().getTime()) );

No caso de passagem de parâmetros que você falou depois, você não pode passar uma String para um Date. Você deveria fazer as transformações necessárias, por exemplo:

java.util.Date d = new SimpleDateFormat(“dd/MM/yyyy”).parse(“01/01/2005”);
seuMetodoQueRecebeUmDate( d );

É isso aí!

Coloquei conforme explicou:

sqlInsereCliente.setInt(1, c.getId());
sqlInsereCliente.setString(2, c.getNome());
sqlInsereCliente.setDate(3, new java.sql.Date(c.getDataInicio().getTime()) );
sqlInsereCliente.setDate(4, new java.sql.Date(c.getDataFinal().getTime()) );

E quando for testar, terei que passar a data como? Ainda não consigo testar.
Agora estou só testando, passando os valores na mão, mas essas datas serão passadas em uma página jsp. Como seria isso?

Obrigada.

Você chegou a ler minha mensagem?

Abaixo eu estou transformando uma String em Date:

[quote=danieldestro]java.util.Date d = new SimpleDateFormat(“dd/MM/yyyy”).parse(“01/01/2005”);
seuMetodoQueRecebeUmDate( d );[/quote]