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:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]
Virgoletta di chiusura mancante prima della stringa di caratteri '....'.
Ovviamente trattandosi di dati binari, il carattere apice può trovarsi ovunque... 
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:
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() );
}
La domanda, quindi: come faccio a inserire un'immagine all'interno del campo di tipo image di SQL Server?
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.