sql >> データベース >  >> RDS >> Oracle

複雑すぎるOraclejdbcBLOB処理

    最初のケースで言及した更新アプローチは、純粋な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. 2つのJson応答Jsonオブジェクトと配列をフェッチする方法

    2. データからjsonb配列とオブジェクトの配列を返すにはどうすればよいですか?

    3. その緊急のとき

    4. HA/DRソリューションの自己妄想を避ける