投稿時間:2004/11/26(Fri) 11:13 投稿者名:kazuやん
Eメール:
URL :
タイトル:無事出来ました(サンプル提示)
> > > VBからOracle-BLOB型へのデータ挿入・参照を行いたいと思っています。 > > サイトで色々調べてみても「oo4o」による操作は記載されているのですが、「DAO/ADO」による > > 操作はなかなか見つかりません。 > > 「DAO/ADO」でのOracle-BLOB型の扱いはどうやって行えば良いのでしょうか? > > (特殊な理由が無い限りoo4oをお薦めしますが、) > AppendChunk、GetChunkメソッド を使用します。 > > VB6.0のヘルプで、 > 「AppendChunk、GetChunk メソッドの例」 > を参照してみてください。 > > > ADOではOLEDBプロバイダがDBの違いを吸収する思想になってますので、 > SQLServer用のサンプルで、OLEDBプロバイダを換えるだけでOracleへ適用できます。 > DAOはODBCドライバがその役目を担いますが、当方では試したことがありません。
だいさん、ご返答ありがとうございます。 現在Oracleへの接続をoo4oで行っているのですが、仕様変更に伴いADOでの接続になる為今回の質問をさせていただきました。 ADOでのOracle接続・BLOBの扱いは無事成功しました。 以下は簡単なサンプルです^^ BLOBの扱いで困っている方がいましたらご参考にして下さい。
/*ADOによるOracle-BLOBの扱いサンプル START*/ Dim robjConnection As ADODB.Connection Dim cmd As New ADODB.Command Dim rs As New ADODB.Recordset Dim intFileNumber As Integer Dim streamOutputFile As Stream Dim sql As String 'DB接続 robjConnection.Open "Provider=OraOLEDB.Oracle;Data Source=test;", _ "kazu", "kazu" 'BLOB領域確保 sql = "INSERT INTO test(id,fname) values('0001',EMPTY_BLOB())" Set cmd.ActiveConnection = robjConnection cmd.CommandType = adCmdText cmd.CommandText = sql cmd.Execute Set cmd = Nothing 'BLOBへ書込 sql = "select fname from test where id = '0001'" Set rs.ActiveConnection = robjConnection rs.CursorLocation = adUseClient rs.CursorType = adOpenStatic rs.Source = sql rs.Open , , adOpenStatic, adLockOptimistic
'出力ファイルをストリームに読込む Set streamOutputFile = New Stream With streamOutputFile .Type = adTypeBinary .Open .LoadFromFile App.Path & "\test.txt" End With rs.Fields(0).Value = streamOutputFile.Read rs.Update rs.Close Set rs = Nothing Close #intFileNumber 'BLOBの読込 sql = "select fname from test where id = '0001'" Set rs.ActiveConnection = robjConnection rs.CursorLocation = adUseClient rs.CursorType = adOpenStatic rs.Source = sql rs.Open , , adOpenStatic, adLockOptimistic
'出力ファイルをストリームに読込む Set streamOutputFile = New Stream With streamOutputFile .Type = adTypeBinary .Open .Write rs.Fields(0).Value .SaveToFile App.Path & "\test.ini", adSaveCreateOverWrite End With rs.Close Set rs = Nothing robjConnection.Close Set robjConnection = Nothing End Sub /*ADOによるOracle-BLOBの扱いサンプル END*/
|