2013年4月20日土曜日

【.NET VB】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()

0 件のコメント:

コメントを投稿