Oracle database: How to read a BLOB?

后端 未结 6 698
星月不相逢
星月不相逢 2021-02-07 23:37

I\'m working with an Oracle database, and I would like to read the contents of a BLOB. How do I do this?

When I do a simple select statement, it merely returns \"(BLOB)

6条回答
  •  无人共我
    2021-02-08 00:14

    If you use the Oracle native data provider rather than the Microsoft driver then you can get at all field types

    Dim cn As New Oracle.DataAccess.Client.OracleConnection
    Dim cm As New Oracle.DataAccess.Client.OracleCommand
    Dim dr As Oracle.DataAccess.Client.OracleDataReader
    

    The connection string does not require a Provider value so you would use something like:

    "Data Source=myOracle;UserID=Me;Password=secret"
    

    Open the connection:

    cn.ConnectionString = "Data Source=myOracle;UserID=Me;Password=secret"
    cn.Open()
    

    Attach the command and set the Sql statement

    cm.Connection = cn
    cm.CommandText = strCommand
    

    Set the Fetch size. I use 4000 because it's as big as a varchar can be

    cm.InitialLONGFetchSize = 4000
    

    Start the reader and loop through the records/columns

    dr = cm.ExecuteReader
    
    Do while dr.read()
        strMyLongString = dr(i)
    Loop
    

    You can be more specific with the read, eg dr.GetOracleString(i) dr.GetOracleClob(i) etc. if you first identify the data type in the column. If you're reading a LONG datatype then the simple dr(i) or dr.GetOracleString(i) works fine. The key is to ensure that the InitialLONGFetchSize is big enough for the datatype. Note also that the native driver does not support CommandBehavior.SequentialAccess for the data reader but you don't need it and also, the LONG field does not even have to be the last field in the select statement.

提交回复
热议问题