VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -