Oracle
 sql >> база данни >  >> RDS >> Oracle

Прекалено сложна обработка на oracle jdbc BLOB

Подходът за актуализиране, който споменавате в първия случай, може да бъде пренаписан с помощта на чист JDBC код и по този начин да се намали зависимостта ви от специфични за Oracle класове. Това може да е полезно, ако приложението ви трябва да не зависи от базата данни.

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();
  }
}

За MSSQL разбирам, че синтаксисът на заключване е различен:

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. Oracle.ManagedDataAccess.EntityFramework - ORA-01918:потребител 'dbo' не съществува

  2. Как да преброите броя на появяванията на символ в стойност на Oracle varchar?

  3. Функция DATEDIFF в Oracle

  4. Oracle SQL - max() с NULL стойности

  5. 6 начина за избор на дублиращи се редове в Oracle