Gravando Data

E aí galera blz, estou usando o código

qry.setDate(“DATANASC”, Date.parse(CAP_DATANASC));

onde converto uma váriavel String para um campo Date, mas em alguns casos a data grava errado(sendo q na variavel o valor esta correto), alguem sabe um modo melhor?
Obs: Estou usando banco Oracle.
Agradeço desde já.

o método parse() de java.util.Date está obsoleta, use no lugar
java.text.DateFormat, que é um pouco mais complicada mas suporta até internacionalização.

mas como faço para gravar sendo
que setDate não aceita DateFormat como parametro,
e quando uso setString da erro dizendo que o campo no banco
é do tipo Date?

JDBC usa java.sql.Date e não java.util.Date, então:

java.util.Date d2 = formatter.parse(d1);
long d3 = d2.getTime();
java.sql.Date d4 = new java.sql.Date(d3);
stmt.setDate(1, d4);