0
OracleでBLOB型の項目にデータを登録したい。
javaを1.4から6にバージョンアップしたところ、
うまくBLOB型の登録ができなくなってしまった
のでお力をお貸し下さい。
【バージョン】
oracle9
java6
【ソース】
-----------------------------------------------------
sqlBuffer = new StringBuffer();
sqlBuffer.append("insert into NSAM values(");
sqlBuffer.append(" " + patientNo);
sqlBuffer.append(" ," + sumNo);
sqlBuffer.append(" ," + amNo);
sqlBuffer.append(" , empty_blob()");
sqlBuffer.append(") ");
stmt.execute(sqlBuffer.toString());
sqlBuffer = new StringBuffer();
sqlBuffer.append("select");
sqlBuffer.append(" PATIENT_NO");
sqlBuffer.append(" ,SUM_NO");
sqlBuffer.append(" ,AM_NO");
sqlBuffer.append(" ,AM");
sqlBuffer.append(" from");
sqlBuffer.append(" NSAM");
sqlBuffer.append(" where");
sqlBuffer.append(" PATIENT_NO = " + patientNo);
sqlBuffer.append(" and SUM_NO = " + sumNo);
sqlBuffer.append(" and AM_NO = " + amNo);
sqlBuffer.append(" for update");
resultSet = stmt.executeQuery(sqlBuffer.toString());
resultSet.next();
Blob blobData = resultSet.getBlob("AM");
OutputStream out = blobData.setBinaryStream(1);
byte[] buffer = new byte[4096];
int length = -1;
while((length = fileStream.read(buffer)) != -1){
out.write(buffer, 0, length);
}
out.close();
------------------------------------------------------
ログをいれて試してみたところ、
Blob blobData = resultSet.getBlob("AM");
の部分の取得がうまくいっていないようです。
java1.4の時は、
BLOB blobData = ((OracleResultSet)((DelegatingResultSet)resultSet).getDelegate()).getBlob("AM");
で取得できていたのですが…
oracle.sql.BLOBって、java6からはエラーになるのですが
使用できないのでしょうか?
今は、java.sql.Blobを使用しています。
よろしくお願いします。