В документации MSDN приведен пример для драйвера JDBC, и аналогичный пример здесь (найден Googling для "mssql jdbc insert image"). Оба этих примера, похоже, полагаются на использование setBinaryStream () для PreparedStatement для передачи FileInputStream
в поле поля типа BLOB.
Третий пример ниже для справки:
PreparedStatement pstmt = con.prepareStatement("INSERT INTO BigTable (Col1) VALUES(?)");
FileInputStream inStream = new FileInputStream(new File("myImg.gif"));
pstmt.setBinaryStream(1, inStream);
pstmt.executeUpdate();
inStream.close();
В ответ на вопрос B я предполагаю, что можно создать хранимую процедуру с параметром BLOB, а затем передать входной поток, используя CallableStatement # setBinaryStream , очень похожий на описанный выше, например,
CallableStatement cstmt = con.prepareCall("{AddImage(?)}");
FileInputStream inStream = new FileInputStream(new File("myImg.gif"));
cstmt.setBinaryStream(1, inStream);
cstmt.executeQuery();
inStream.close();