Grazie hai suggerimenti trovati sono riuscito ad immagazzinare un mio oggetto in un db.
Ora però ho trovato qualche difficoltà a aggiornare la colonna, non mi sembra di aver trovato nulla nel forum e quindi scrivo.
Ho fatto due prove una che funziona:
In questo caso funziona tutto alla grande, i campi in gioco sono due char.codice:String query = "UPDATE tabella SET Cognome = ? WHERE Nome = ?"; PreparedStatement pst = con.prepareStatement(query); pst.setString(1, "Rossi"); pst.setString(2, "Paolo"); int pp = pst.executeUpdate();
Nel prossimo caso invece si arrabbia:
L'errore che mi da è il seguente, e puna alla riga "int pp = pst.executeUpdate();":codice:String query = "UPDATE tabella SET Oggetto = ? WHERE Nome = ?"; PreparedStatement pst = con.prepareStatement(query); MyObject oggetto = new Myobject(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(oggetto); byte[] objectByte = baos.toByteArray(); baos.close(); oos.close(); ByteArrayInputStream bais = new ByteArrayInputStream(objectByte); pst.setBinaryStream(1, bais, objectByte.length); pst.setString(2, "Paolo"); int pp = pst.executeUpdate();
[Microsoft][Driver ODBC Microsoft Access] Parametri insufficienti. Previsto 3.
getSQLState() = 07001
getErrorCode() = -3010
Il db che sto utilizzando è access, poi volevo passare a oracle, ed il campo in questione Indirizzo è definito OLE, secondo me potebbe essere questo, ma non capisco perchè.
Completo dicendo che le istruzioni per ottenere il byte[] da passare sono le stesse che utilizzo per fare la insert del campo, ed in quel caso mi funzionano a pennello.

Rispondi quotando