投稿日 | : 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*/