Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Penanganan BLOB Oracle jdbc yang terlalu rumit

Pendekatan pembaruan yang Anda sebutkan dalam kasus pertama dapat ditulis ulang menggunakan kode JDBC murni dan dengan demikian mengurangi ketergantungan Anda pada kelas khusus Oracle. Ini bisa membantu jika aplikasi Anda harus agnostik basis data.

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

Untuk MSSQL saya mengerti bahwa sintaks penguncian berbeda:

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. Membuat Pemicu Urutan Oracle

  2. pesan kesalahan sqldeveloper:Adaptor jaringan tidak dapat membuat kesalahan koneksi

  3. Dapatkan amplop, yaitu rentang waktu yang tumpang tindih

  4. Contoh Pernyataan Oracle FOR LOOP SELECT

  5. Memisahkan string menjadi beberapa baris di Oracle