Я пытаюсь сделать вставки и обновления изображения в БД, уже в формате BLOB-объектов.
public static boolean alterarLogo(int id, Blob logo) {
String sql = "update conta set conta_logo = " + logo + " where conta_id = " + id;
try (Connection conn = ConexaoDBGeral.abre()) {
if (conn != null) {
try (Statement ps = conn.createStatement()) {
ps.executeUpdate(sql);
return true;
}
}
} catch (SQLException ex) {
Logger.getLogger(ContaDAO.class.getName())
.log(Level.SEVERE, null, ex);
}
return false;
}
Приведенный выше код вызывает исключение: «неправильное имя (слишком много точечных имен): javax.sql.rowset.serialblob». В БД рассматриваемый столбец имеет тип «oid».
Код, где я получаю BLOB-объект:
int idEmpresa=-1;
SerialBlob blob = null;
byte[] contents;
try {
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
// Process form file field (input type="file").
String fieldName = item.getFieldName();
String fileName = FilenameUtils.getName(item.getName());
InputStream file = item.getInputStream();
contents = IOUtils.toByteArray(file);
try {
blob = new SerialBlob(contents);
} catch (SQLException ex) {
Logger.getLogger(Config.class.getName()).log(Level.SEVERE, null, ex);
}
ContaDAO.alterarLogo(idEmpresa, blob);
}
}
} catch (FileUploadException e) {
Я использую Java, сервлеты и JSP, а также PostGres. Где ошибка?