BLOB型データを更新するサンプルコードについて説明します。
本サンプルコードは、Openステートメントを使用してファイルより取得したBLOB型データを、AppendChunkメソッドで16384バイトずつRecordsetオブジェクトへ追加します。UPDATE文実行後、影響を受けた行数をメッセージボックスで表示します。
アプリケーションの手順
コネクションを接続します。詳細は、“C.3.1 接続および切断”を参照してください。
Commandオブジェクトを生成します。
Command.ActiveConnectionプロパティに手順1で生成したConnectionオブジェクトを設定します。
Command.CommandTextプロパティにUPDATE文を設定します。
Command.CommandTypeプロパティにadCmdTextを設定します。
Parameterオブジェクトの生成と設定をします。
Parameter.Nameプロパティには、オブジェクト名を任意で設定します。
Parameter.Typeプロパティには、adLongVarBinaryを設定します。
Parameter.Directionプロパティには、パラメタが入力パラメタ(adParamInput)であることを設定します。
Parameter.Sizeプロパティには、データの最大サイズをバイト数で設定します。
Parameter. AppendChunkメソッドでBLOB型データを追加します。
ParametersコレクションにParameterオブジェクトを追加します。SQL文中のパラメタマーカ('?')の出現順に追加してください。
Command.ExecuteメソッドでUPDATE文を実行します。
引数RecordsAffectedを指定しExecuteメソッドで影響を受けた行数を取得します。
コネクションを切断します。
オブジェクトを破棄します。
エラー処理については、“C.3.11 エラー処理”を参照してください。
'オブジェクト宣言 Dim Con As Connection Dim Com As Command Dim Par1 As Parameter 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 Dim ra As Long 'Connectionオブジェクトの生成と設定 Set Con = New Connection Con.ConnectionString = "DSN=DSN01;UID=USER01;PWD=PASS01;" On Error GoTo ErrorProc '1.コネクション接続 Con.Open '2. Commandオブジェクトの生成と設定 Set Com = New Command Com.ActiveConnection = Con Com.CommandText = "UPDATE IMGTBL SET BLB_C=? WHERE KEY_C=1" Com.CommandType = adCmdText '3. Parameterオブジェクトの生成と設定 Set Par1 = Com.CreateParameter("BLB_C", adLongVarBinary, adParamInput) 'ファイルを開く DataFile = FreeFile Open "C.BMP" For Binary Access Read As DataFile 'BLOB型データのサイズを取得 Fl = LOF(DataFile) If Fl = 0 Then Close DataFile: Exit Sub Par1.Size = Fl '規定量にデータを分けて追加するため、分割数と残量を求める Chunks = Fl \ ChunkSize Fragment = Fl Mod ChunkSize ReDim Chunk(Fragment - 1) 'BLOB型データをファイルから取得する Get DataFile, , Chunk() '4. ParameterオブジェクトへBLOB型データを追加する Par1.AppendChunk (Chunk) ReDim Chunk(ChunkSize - 1) '分割数分繰り返し For k = 1 To Chunks 'BLOB型データをファイルから取得する Get DataFile, , Chunk() '4.規定量分のデータ追加 Par1.AppendChunk (Chunk) Next k '5. ParametersコレクションにParameterオブジェクトを追加 Com.Parameters.Append Par1 '6. UPDATE文を実行します Com.Execute ra 'メッセージボックスの表示 MsgBox ra & "行更新されました", vbOKOnly, "Normal End" 'ファイルを閉じる Close DataFile '7. コネクション切断 Con.Close '8. オブジェクトの破棄 Set Par1 = Nothing Set Com = Nothing Set Con = Nothing Exit Sub 'エラー処理 ErrorProc: 'エラー処理ルーチンを記述します