Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zbyt skomplikowana obsługa obiektów Oracle jdbc BLOB

Podejście do aktualizacji, o którym wspominasz w pierwszym przypadku, może zostać przepisane przy użyciu czystego kodu JDBC, a tym samym zmniejszyć zależność od klas specyficznych dla Oracle. Może to być przydatne, jeśli Twoja aplikacja musi być niezależna od bazy danych.

public static void updateBlobColumn(Connection con, String table, String blobColumn, byte[] inputBytes, String idColumn, Long id) throws SQLException {
  PreparedStatement pStmt = null;
  ResultSet rs = null;
  try {
    String sql = 
      " SELECT " + blobColumn + 
      " FROM " + table + 
      " WHERE " + idColumn + " = ? " +
      " FOR UPDATE";
    pStmt = con.prepareStatement(sql, 
      ResultSet.TYPE_FORWARD_ONLY, 
      ResultSet.CONCUR_UPDATABLE);
    pStmt.setLong(1, id);
    rs = pStmt.executeQuery();
    if (rs.next()) {
      Blob blob = rs.getBlob(blobColumn);
      blob.truncate(0);
      blob.setBytes(1, inputBytes);
      rs.updateBlob(blobColumn, blob);
      rs.updateRow();
    }
  }
  finally {
    if(rs != null) rs.close();
    if(pStmt != null) pStmt.close();
  }
}

W przypadku MSSQL rozumiem, że składnia blokowania jest inna:

String sql = 
  " SELECT " + blobColumn + 
  " FROM " + table + " WITH (rowlock, updlock) " + 
  " WHERE " + idColumn + " = ? "


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. czy można mieć generator sekwencji alfanumerycznych w sql

  2. Oracle JDBC ojdbc6 Jar jako zależność Maven

  3. Jak zwrócić wiele wierszy z procedury składowanej? (PL/SQL Oracle)

  4. Próba eksportu Oracle przez PL/SQL daje datę 0000-00-00

  5. Jak wykonać blok PL SQL w Oracle