2013-11-26 57 views
2

我有一張名爲學生的表格,並且有名爲studentnumber,studentphoto(LONGRAW)的列,我需要將此longraw導出爲jpeg.How can I do this?
我到處搜索,但我找不到任何解決方案。
我的代碼:Oracle Long Raw圖片

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 

注:命名照片欄總是返回空。我試過在c#中仍然是一樣的。 我該如何解決這個問題?

+0

hi @Mustibh Upd這個答案有助於解決您的問題?如果沒有,請添加什麼不成功的問題。當答案對您有幫助時,您是否可以通過點擊旁邊的空心綠色複選標記來接受它? –

回答

1

長原始數據類型是過去的東西,它是一個平均使用的構造。一段時間以來,長時間的原始數據是在Oracle中存儲二進制文件的唯一方法。您可以使用OCI訪問它,最好使用Pro * C。但是使用Pro * C引入了一個特定於Oracle的預編譯器加上C語言。預編譯器很難在版本上升級。

我推薦以下方法:

在VB.Net使用ODP.Net(如果尚未已經使用),並執行查詢其鑄LONG RAW到現代斑點,像:

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

然後像使用varchar2一樣獲取the_photo的結果。

如果您需要更多的樣本,請把表結構(DDL),用一些簡單的照片插入(可能只是原始字符串「a」)和在你的問題中使用的驅動程序信息。祝你好運!

+1

很高興聽到這個爲你解決它。 –