Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Xử lý BLOB oracle jdbc quá phức tạp

Phương pháp cập nhật mà bạn đề cập trong trường hợp đầu tiên có thể được viết lại bằng cách sử dụng mã JDBC thuần túy và do đó giảm sự phụ thuộc của bạn vào các lớp dành riêng cho Oracle. Điều này có thể hữu ích nếu ứng dụng của bạn cần phải là cơ sở dữ liệu bất khả tri.

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

Đối với MSSQL, tôi hiểu rằng cú pháp khóa là khác nhau:

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. Thay đổi bảng để sửa đổi giá trị mặc định của cột

  2. Hàm CHR () trong Oracle

  3. làm thế nào để chỉ chọn hàng có trình tự tối đa mà không sử dụng truy vấn con?

  4. Chọn từ bảng bằng cách chỉ biết ngày mà không có thời gian (ORACLE)

  5. Sử dụng chuỗi chứa hàm trong truy vấn SQL oracle