これが私がやろうとしていることです:
- オラクルBLOBから画像を読み取ります
- サイズを変更します
- サイズ変更された画像をテーブルに書き戻します(blob自体を更新します)。
私のテーブルは次のようになります。
TECHID NOT NULL NUMBER(12)
MEDIADATA NOT NULL BLOB()
INSERTEDDATE NOT NULL DATE
MODIFIEDDATE NOT NULL DATE
手順1と2は完全に機能します。ステップ3のコードは次のとおりです(これはPoCタイプのスパイクソリューションであり、最終的な製品ではありません)。
サイズ変更されたファイル=サイズ変更された画像を取得
FileInputStream fis = new FileInputStream(resized)
PreparedStatement p = db.connection.prepareStatement( "update mymediadata set mediadata =?where TECHID = 142")
if(fis!= null)
{{
println( "Available:$ {fis.available()}"); //これは機能します-使用可能な117Kバイトを示します。
}
p.setBinaryStream(1、fis、resizeed?.length()?. intValue())
試す
{{
p.executeUpdate()
}
キャッチ(例外e)
{{
e.printStackTrace()
}
ついに
{{
p.close()
fis.close()
}
手順3に進むと、次のエラーが発生します。
SQLException:ORA-01407:("OWNER"。"MEDIADATA"。"MEDIADATA")をNULLに更新できません
FileInputStream(fis)がnullでないことを(デバッガーで)明示的にチェックしました。また、resized?.length()?.intValue()値も0より大きいことを確認しました。そのため、何が間違っているのかを確認するのに苦労しています。
テクノロジースタック:
Groovy GDK 1.7 Java 1.5 Oracle 10g
32ビットWindowsXPで実行されています。