Buenas,
Código Java:
Ver originalbyte[] b = new byte[1024];//array de bytes
int n = in.read(b);
in.close();
Este codigo no tiene sentido alguno. Abres el stream, lees solo el primer byte, lo almacenas en un entero que no utilizas nunca y luego intentas construir la imagen con un array vacio.
Debes primero aprender a leer contenido binario:
http://www.aquaphoenix.com/lecture/java6/page4.html
Respecto al error de SQLServer, aparentemente es porque llamas dos veces al getBinaryStream (una en el if y otra para leer):
https://msdn.microsoft.com/es-es/lib...=sql.110).aspx
Un saludo