BLOB型データを更新するサンプルコードについて説明します。
本サンプルコードは、Openステートメントを使用してファイルより取得したBLOB型データを、AppendChunkメソッドで16384バイトずつrdoParameterオブジェクトへ追加します。UPDATE文実行後、影響を受けた行数をメッセージボックスで表示します。
定義長が32Kバイト未満のBLOB型に対するrdoParameterオブジェクトには、AppendChunkメソッドは使用できません。rdoParameter.Valueプロパティにファイルより取得したBLOB型データを設定してください。
アプリケーションの手順
コネクションを接続します。詳細は、“C.2.1 接続および切断”を参照してください。
rdoConnection.CreateQueryメソッドでrdoQueryオブジェクトを生成します。(SQLプロパティへUPDATE文を設定します)
rdoParameter.AppendChunkメソッドでBLOB型データを追加します。
rdoQuery.ExecuteメソッドでUPDATE文を実行します。
rdoQuery.RowsAffectedプロパティで、Executeメソッドで影響を受けた行数を取得します。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“C.2.11 エラー処理”を参照してください。
'オブジェクト宣言 Dim Env As rdoEnvironment Dim Con As rdoConnection Dim Qry As rdoQuery Dim DataFile As Integer Dim Chunks As Integer Dim Fl As Long Dim Fragment As Integer Dim Chunk() As Byte Const ChunkSize As Integer = 16384 Dim k As Integer 'rdoEnvironmentオブジェクトの生成 Set Env = rdoEngine.rdoEnvironments(0) On Error GoTo ErrorProc '1. コネクション接続 Set Con = Env.OpenConnection("DSN01", rdDriverNoPrompt, _ False, "UID=USER01;PWD=PASS01;") '2. rdoQueryオブジェクトの生成 Set Qry = Con.CreateQuery("", "UPDATE IMGTBL SET BLB_C=? WHERE KEY_C=1") 'ファイルを開く DataFile = FreeFile Open "C.BMP" For Binary Access Read As DataFile 'BLOB型データのサイズを取得 Fl = LOF(DataFile) If Fl = 0 Then Close DataFile: Exit Sub '規定量にデータを分けて追加するため、分割数と残量を求める Chunks = Fl \ ChunkSize Fragment = Fl Mod ChunkSize ReDim Chunk(Fragment - 1) 'BLOB型データをファイルから取得する Get DataFile, , Chunk() '3. rdoParameterオブジェクトへBLOB型データを追加する Qry.rdoParameters(0).AppendChunk (Chunk) ReDim Chunk(ChunkSize - 1) '分割数分繰り返し For k = 1 To Chunks 'BLOB型データをファイルから取得する Get DataFile, , Chunk() '3.規定量分のデータ追加 Qry.rdoParameters(0).AppendChunk (Chunk) Next k '4. UPDATE文を実行します Qry.Execute MsgBox Qry.RowsAffected & "行更新されました", _ vbOKOnly, "Normal End" 'ファイルを閉じる Close DataFile '5. コネクション切断 Con.Close '6. オブジェクトの破棄 Set Qry = Nothing Set Con = Nothing Set Env = Nothing Exit Sub 'エラー処理 ErrorProc: 'エラー処理ルーチンを記述します