Oracle Long Raw图片

时间:2013-11-26 10:39:39

标签: vb.net oracle blob

我有一个名为students的表,并且列有名为studentnumberstudentphoto(LONGRAW)的列,我需要将此longraw导出为jpeg。我可以这样做吗?
我到处搜索,但找不到任何解决办法 我的代码:

Dim ImgWriter As New BinaryWriter(File.OpenWrite(outsideTxt.Text + "\" + flname))
            Dim ImgBlob(102400) As Byte
            Dim lBytesReturned As Long = 0, lStartIdx As Long = 0
            Dim buffersize As Integer
            buffersize = 4096
            lBytesReturned = x.GetBytes(0, lStartIdx, ImgBlob, 0, buffersize) ' The exception occurs here
            Do While (lBytesReturned = buffersize)
                ImgWriter.Write(ImgBlob)
                ImgWriter.Flush()
                lStartIdx = lStartIdx + buffersize
                lBytesReturned = x.GetBytes(0, lStartIdx, ImgBlob, 0, ImgBlob.Length)

                ImgWriter.Write(ImgBlob)
                ImgWriter.Flush()
                ImgWriter.Close()
            Loop

注意:名为photo的列始终返回null。 我试过c#还是一样的。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

Long原始数据类型已成为过去,它是一个使用的平均构造。长时间原始是在Oracle中存储二进制文件的唯一方法。您可以使用OCI访问它,最好使用Pro * C.但是使用Pro * C引入了Oracle特定的预编译器和C.预编译器很难通过版本进行升级。

我建议采用以下方法:

在VB.Net中使用ODP.Net(如果尚未使用)并执行查询,将长原始转换为现代blob,如:

select to_lob(studentphoto) the_photo
from   students
where  studentnumber=250370

然后像使用varchar2一样获取the_photo的结果。

如果您需要更多样本,请放置表格结构(DDL),带有一些简单照片的插页(可能只是原始字符串'a')以及您问题中使用的驱动程序的信息。祝你好运!