Ciao a tutti.
Sono alle prese con una applicazione Java che dovrebbe permettermi di archiviare in un Database SQL Server 2000 delle immagini (o più in generale, dei dati binari che superano i fatidici 8 kb).
Per questo ho predisposto nel DB una tabella con un campo di tipo "image" (che supporta fino a 2 GB di dati).
Il problema è che non ho idea di come valorizzare questo campo tramite istruzioni (o script) SQL.
Ho provato a trasformare i miei dati binari in una stringa e poi inserire il tutto all'interno dell'istruzione SQL, ma la prova è finita miseramente quando il driver JDBC mi ha risposto:
Ovviamente trattandosi di dati binari, il carattere apice può trovarsi ovunque...java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]
Virgoletta di chiusura mancante prima della stringa di caratteri '....'.
Da notare che dalla guida di SQL Server si evince che è necessario l'utilizzo di un'istruzione particolare: WRITETEXT al posto della INSERT (o UPDATE), che fa uso di puntatori... quel messaggio deriva proprio dall'utilizzo di tale istruzione, copiando fedelmente un esempio della guida stessa. :master:
Vi posto il codice:
La domanda, quindi: come faccio a inserire un'immagine all'interno del campo di tipo image di SQL Server?codice:String query = "DECLARE @ptrval binary(16) "; query += "SELECT @ptrval = TEXTPTR(img) "; query += "FROM TAB_Prova "; query += "WRITETEXT img @ptrval '" + generaStringa(file) + "'"; if ( !db.eseguiAggiornamento(query) ) { System.out.println( db.getErrore() ); }
Se nessuno mi sa dire come fare, sarò costretto a fare di testa mia: codifico l'immagine secondo lo standard Base64 e inserisco il tutto in un campo text, ma questo mi costringerebbe ad un aumento delle dimensioni del file, che arriverebbe ad occupare 4/3 della sua dimensione originale.
Confido nell'esperienza altrui.
Ciao.