【问题标题】:How to retrieve BLOB data from Oracle Client using Oledb driver in Vb.Net?如何使用 Vb.Net 中的 Oledb 驱动程序从 Oracle 客户端检索 BLOB 数据?
【发布时间】:2012-04-18 13:17:45
【问题描述】:

我正在使用 oleDbConnection 从 Oracle 列中选择一个 BLOB 数据,我必须坚持使用这种类型的连接,因为我的所有应用程序都在使用它。

使用以下代码后,我得到了错误:未指定的错误。

Dim pSelectCommand As OleDbCommand = New OleDbCommand() 
Dim commandTextTemplate As String = "SELECT PICTURE FROM ALBUMS WHERE CODE= 4"
pSelectCommand.CommandText = commandTextTemplate
pSelectCommand.Connection = g_pOleDbConnection 
 
Dim fs As FileStream 
 
' Open the connection and read data into the DataReader.
If g_pOleDbConnection.State = ConnectionState.Closed Then g_pOleDbConnection.Open()
 
Dim myReader As OleDbDataReader = pSelectCommand.ExecuteReader() 'Error is on this line

Do While (myReader.Read())
Dim byteArray As Byte() = (myReader(g_pfldAPicture))
fs = New FileStream("Album.bmp", FileMode.CreateNew, FileAccess.Write)
fs.Write(byteArray, 0, byteArray.Length)
Loop

我可以尝试什么来解决这个问题?

【问题讨论】:

  • 如果有错误,请输入错误信息!
  • 我猜主帖中提到了这个错误......(未指定的错误)......就是这样......
  • 尝试将字段和表格放在括号中:[PICTURE][ALBUMS][CODE]。否则,请仔细检查您的字段名称。您应该重构您的代码并在完成调用某些内容后始终关闭连接,最好使用using() 括号。您正在检查连接状态这一事实对我来说暗示了更大的问题。
  • LarsTech 点非常重要,Oracle 充满了非托管资源,没有确定性地完成 dB 连接会产生影响。未指定的错误是否有内部异常?通常,Oracle 会以 ORA-00000 格式为您提供错误?查询是在 TOAD 还是其他 sql EM 工具中运行?
  • @LarsTech:我总是关闭我的连接,即使它没有在此代码中显示,但为了进行更多重新检查,我会检查连接状态。 @Jeremy:我得到的完整的未指定错误文本如下:System.Data.OleDb.OleDbException:发生未指定的错误 Oracle 错误,但无法从 Oracle 检索错误消息。不支持数据类型。

标签: vb.net oracle


【解决方案1】:

这是您在 eggheadcafe 和 CodeProject 上的问题的相同答案,参考:

http://www.eggheadcafe.com/community/vb/14/10442149/how-to-retrieve-blob-data-from-oracle-client-using-oledb-driver-in-vb.aspx
http://www.codeproject.com/Questions/368813/How-to-retrieve-BLOB-data-from-Oracle-Client-using

OleDb 不支持 Oracle Blob。 http://support.microsoft.com/kb/244661 您必须改用 ADO.net。

编辑:你好

我理解你,我试图说得好听:

Oracle 8.x 特定的数据类型,例如 CLOB、BLOB、BFILE、NCHAR、 不支持 NCLOB 和 NVARCHAR2。

参考:http://support.microsoft.com/kb/244661

您需要使用Oracle Provider for OLE DB 或更好,但只需使用Oracle Data Provider for .NET (ODP.NET) 进行此 BLOB 读取操作。

【讨论】:

  • 也许你没有很好地理解我。我已经检查了 oracle 连接类型,它使用 OLE 对象成功地将二进制数据插入到 BLOB Oracle 列中,但是这里的问题是通过 OleDbCommand.ExecuteReader 从 BLOB 列中读取数据,所以我收到了一个错误(未指定的错误)但是就我而言,Ole 是强制性的……这就是我需要帮助的原因……
  • 是的,我会尽力帮助您,因为根据我的编辑它支持 upnsupport,在这种情况下,您可以只求助于 BLOB 的文件系统或这个特定的操作尝试和游说能够基于 OleDB(非 Oracle 驱动程序)不支持此操作而使用不同的驱动程序
猜你喜欢
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
相关资源
最近更新 更多