【Oracle】BLOB

1.データベースからの読み込み
Dim strSql As String = "select IMG from TBL where ID=XX"
Dim cmd As New OracleCommand(strSql, cnn)
Dim dr As OracleDataReader = cmd.ExecuteReader

'BLOBデータの読み込み
If dr.Read Then
Dim blob As OracleBlob = dr.GetOracleBlob(0)
Dim ms As New System.IO.MemoryStream(blob.Value)
'MemoryStreamに読み込んだBLOBデータをファイルに書き出し
System.IO.File.WriteAllBytes(sCImgPath_Temp, ms.ToArray())
Else
Call WriteLineTime("該当するイメージファイルが見つかりません。")
Exit Sub
End If

cmd.Dispose()

2.データベースへの書き込み
'ファイルのデータをByte配列に読込
Dim fs As New System.IO.FileStream(sCImgPath_New, IO.FileMode.Open, IO.FileAccess.Read)
Dim blobData(fs.Length) As Byte
fs.Read(blobData, 0, fs.Length)

'SQLの設定(BLOBのデータはバインド変数「:blobdata」としておく)
Dim strUpdateSql As String= "update tbl set IMG =:blobdata where id=XX"

cnn.BeginTransaction()
'BLOBのデータを設定
Dim Updatecmd As New OracleCommand(strUpdateSql, cnn)
Dim pBlob As OracleParameter = Updatecmd.Parameters.Add("blobdata", OracleDbType.Blob)
pBlob.Value = blobData

'SQLの実行(戻り値はUpdateの対象行数)
Dim retCols As Long = Updatecmd.ExecuteNonQuery()
Updatecmd.Transaction.Commit()
Updatecmd.Dispose()