我有一个名为students的表,并且列有名为studentnumber
,studentphoto
(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#还是一样的。 我该如何解决这个问题?
答案 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')以及您问题中使用的驱动程序的信息。祝你好运!