[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/11/24(Wed) 16:09
投稿者名:kazuやん
Eメール:
URL :
タイトル:
OracleのBLOB型
こんにちは、kazuやんと言います。

VBからOracle-BLOB型へのデータ挿入・参照を行いたいと思っています。
サイトで色々調べてみても「oo4o」による操作は記載されているのですが、「DAO/ADO」による
操作はなかなか見つかりません。

「DAO/ADO」でのOracle-BLOB型の扱いはどうやって行えば良いのでしょうか?
宜しくお願いします。

投稿時間:2004/11/26(Fri) 08:42
投稿者名:だい
Eメール:dee_bassist@hotmail.com
URL :
タイトル:
Re: OracleのBLOB型

> 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ドライバがその役目を担いますが、当方では試したことがありません。

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