domingo, 30 de marzo de 2008

Insertar un objeto java.sql.Date en SQL Server 2000

En ocasiones queremos saber como insertar un tipo de dato Date del paquete java.sql, normalmente para hacerlo realizamos una conversión CASTING en la sentencia SQL que se le manda a la base de datos, p.e

INSERT INTO ... VALUES(..., convert(varchar,DateColumn,103)...)

En el caso de que no deseamos realizar esa conversion, tenemos el siguiente código:

USE pubs
GO
CREATE TABLE test(test_varchar VARCHAR(255), test_date DATETIME)
GO


/*
* Main.java
*/

package testinsertdate;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
/**
*
* @author hugo
*/
public class Main {

/** Creates a new instance of Main */
public Main() {
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws ParseException {
int result = 0;
Connection con = null;
PreparedStatement ps = null;

SimpleDateFormat fecha = new SimpleDateFormat( "dd/MM/yyyy" );

try{
ConnectionFactory cf = new ConnectionFactory( ConnectionFactory.TYPE_MSSQL,
"localhost", "pubs" );
con = cf.getConnection( "sa", "sa" );
ps = con.prepareStatement( "INSERT INTO test VALUES( ?, ? )" );
ps.setString( 1, "test2" );
ps.setDate( 2, new Date( fecha.parse( "15/02/1982" ).getTime() ) );

ps.executeUpdate();
System.out.println( "Conversion sin excepcion!" );
}catch( SQLException sqle ){
sqle.printStackTrace();
}catch( ParseException pe){
pe.printStackTrace();
}finally{
if( ps != null ) ConnectionFactory.close(ps);
if( con != null ) ConnectionFactory.close(con);
}
}
}
Enlaces de interes:
La clase ConnectionFactory ya lo vimos en el el Post de Conexión con SQL Server 2005
Saludos a todos ;)

2 comentarios:

Anónimo dijo...

Hola ! he visto que tienes muchos posts sobre java
el otro dia estuve googleando y encontre un foro de java y en español

aqui te dejo la direccion por si lo quieres conocer
Foro de java

Hugo Flores J. dijo...

Gracias camila, voy a visitarlo ;)