Originariamente inviato da music_ale
Ma se voglio creare un oggetto java.sql.Date da inserire nel db, come devo fare?
Hai due modi per farlo:
1) Conoscere la sintassi usata dal tuo DB per le date e sfruttarla in un oggetto Statement (se poi decidi di cambiare database, dovrai rimettere mano alle SQL crud che hai scritto)
2) Avvalerti delle PreparedStatement, che risolvono il problema per te.
Caso 1: supponiamo di avere a che fare con un DB MySQL che accetta le date nel formato "yyyy-MM-dd".
codice:
java.util.Date d = new java.util.Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Statement stmt = con.createStatement();
int numRec = stmt.executeUpdate("INSERT INTO ... VALUES(" + sdf.format(d) + ");");
Caso 2: non mi interessa più sapere che DB c'è sotto.
codice:
java.sql.Date d = new java.sql.Date( new java.util.Date().getTime() );
String sql = "INSERT INTO ... VALUES(?);";
PreparedStatement pstmt = con.prepareStatement( sql );
pstmt.setDate(1, d);
int numRec = pstmt.executeUpdate();
Come ha già detto satifal, il "formato" di una data è solo un modo per visualizzarla all'utente, che dipende solo dall'abitudine dell'utente, dal suo Paese di origine, dallo spazio che si ha a video, ecc... non ha nulla a che vedere con il dato in se. Una data altro non è che un istante nel tempo.
Oggi è il 30 di novembre del 2010.
Se io oggi creo un oggetto Date in questo modo:
codice:
Date d = new Date();
Esso mi rappresenterà la data di oggi. E questo oggetto io lo posso visualizzare in infiniti modi diversi:
codice:
30/11/2010
30/11/10
30 Nov 2010
30 Novembre 2010
2010-11-30
10-11-30
Martedì 30 novembre 2010
...
Ma è sempre e solo lo stesso oggetto "d" creato prima. Il modo di visualizzarlo (il formato) dipende sempre e solo da quello che io voglio far vedere all'utente ed è indipendente dal dato stesso.
Ciao.