Formato de fecha valido para mysql

Este método funciona correcto, pero quiero sus opiniones respecto al formato de fecha para guardar en Mysql.
Algunas formas mejores de hacer esto?

public class formatoFecha{
        public static void main(String args[]) {
                formatoFecha objeto = new formatoFecha();
                System.out.println(objeto.formatoDeFecha("20/04/2011"));
        }

        public String formatoDeFecha(String fecha) {
                return ((fecha.substring(6)).concat(fecha.substring(2,6)).concat(fecha.substring(0,2))).replace('/','-');

        }
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Una mejor forma es pasarle un

Una mejor forma es pasarle un objeto Date y usar el método setTime de java.sql.PreparedStatement ( o setTimestamp si quieres guardar la hora también ) )

Lo que estas haciendo ahí es crear un string tipo:

String insert = "insert into blablabl values ( "+new formatoFecha().formatoDeFecha( "20/04/2011")+" )";

Lo cual es un tanto inecesario porque eso es precisamente una de las cosas que hacen los drivers de jdbc, insertar de forma correcta.

Además que esta un tanto raro que una fecha la tengas como "string" inicialmente, pero ese es otro tema.

Usando el PreparedStatement sería algo como:

Date date = ...
PreparedStatement pstmt = connection.prepareStatement("insert into blabla value ( ? )");
pstmt.setTime( 1 , date );
...  

Y listo!

Recuerda que si la fecha la estas obteniendo como un string y peor aún dejas que llegue desde el usuario ( por ejemplo en un formulario web )

String fecha = request.getParameter("laFecha");

Y la pasas tal cual, tu aplicación se hace ( más ) vulnerable a un ataque de SQL injection.

La fecha la seteo en un JTextField

Lo primero que estoy haciendo es un método para ponerlo en un JTextFieldFecha que no sea modificable. Eso lo hago con así:

        public String fecha(){
                String fecha="";
                Calendar c1 = new GregorianCalendar();
                String dia = Integer.toString(c1.get(Calendar.DATE));
                String mes = Integer.toString(c1.get(Calendar.MONTH)+1);
                String anio= Integer.toString(c1.get(Calendar.YEAR));
                if(c1.get(Calendar.DATE)<10){
                        dia="0".concat(dia);
                }
                if(c1.get(Calendar.MONTH)<10){
                        mes="0".concat(mes);
                }
                //String[] fecha={dia,mes,anio};
                return dia.concat("/").concat(mes).concat("/").concat(anio);
        }

Esto me da como resultado la fecha actual en este formato:01/06/2011

Segun yo cuando hago el getFecha().getText(). debo convertir en un formato válido par a poder almacenarlo en mysql.
Esto lo hago usando este método.

        public String formatoDeFecha(String fecha) {
                return ((fecha.substring(6)).concat(fecha.substring(2,6)).concat(fecha.substring(0,2))).replace('/','-');

        }

Y me retorna la fecha en este formato 2011-06-01, ya tengo un formato válido.
ahora hago objeto.setFecha(2011-06-01).

Así se me ocurrio y espero criticas y sugerencias :)

Saludos :)

Imagen de ezamudio

recomendaciones

Varias:

1. Renombra tu clase a FormatoFecha
2. Elimina tu clase FormatoFecha y utiliza java.text.SimpleDateFormat
3. Utiliza directamente fechas con MySQL, y PreparedStatements parametrizados, como ya mencionó Oscar. MySQL soporta fechas perfectamente, no veo por qué tienes que estárselas pasando como cadenas.

Gracias por las recomendaciones

Se ve la novatez de no conocer aun muchas cosas.

Gracias usare lo que me recomiendan thanks bye