(转载)VB 查询Oracle中blob类型字段,并且把blob中的图片以流的方式显示在Image上
2014-07-26 13:49
567 查看
原文摘自:/article/4066574.html
'模块代码 Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long Private Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, riid As Any, ppvObj As Any) As Long Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, pclsid As Any) As Long Private Declare Function GlobalAlloc Lib "kernel32" (ByVal uFlags As Long, ByVal dwBytes As Long) As Long Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long) Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long Public Type GUID ' 16 bytes (128 bits) 'dwData1 As Long ' 4 bytes 'wData2 As Integer ' 2 bytes 'wData3 As Integer ' 2 bytes abData4(7) As Byte ' 8 bytes, zero based End Type Public Function PictureFromByteStream(B() As Byte) As IPicture Dim hMem As Long Dim lpMem As Long Dim LowerBound As Long Dim ByteCount As Long Dim IID_IPicture As GUID Dim istm As stdole.IUnknown LowerBound = LBound(B) ByteCount = UBound(B) - LowerBound + 1 hMem = GlobalAlloc(&H2, ByteCount) If hMem <> 0 Then lpMem = GlobalLock(hMem) If lpMem <> 0 Then MoveMemory ByVal lpMem, B(LowerBound), ByteCount GlobalUnlock hMem If CreateStreamOnHGlobal(hMem, 1, istm) = 0 Then If CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), IID_IPicture) = 0 Then OleLoadPicture ByVal ObjPtr(istm), ByteCount, 0, IID_IPicture, PictureFromByteStream End If End If End If End If End Function
Public Sub Combo1_Click() Dim adoCnn As ADODB.Connection Dim rstOra As ADODB.Recordset Dim intI As Integer Set adoCnn = New ADODB.Connection Set rstOra = New ADODB.Recordset adoCnn.ConnectionString = "Provider=OraOLEDB.Oracle;User ID=dzjc;password=zlkj;Data Source=dzjc_2005;" '读blob字段要用Provider=OraOLEDB.Oracle adoCnn.CursorLocation = adUseClient adoCnn.Open rstOra.CursorLocation = adUseClient rstOra.ActiveConnection = adoCnn rstOra.Open "SELECT zp FROM dzjc.dzjc_wfzp WHERE xh = '5'" 'Set Image1.DataSource = rstOra Set Image1.Picture = PictureFromByteStream(rstOra.Fields("zp").Value) End Sub
相关文章推荐
- Sql Server 中image类型迁移到Oracle 中Blob类型出现图片显示不出来,why????请博客们帮忙
- 图片转二进制存入oracle字段类型为Blob(取出二进制转图片并显示),图片带路径
- c# winform 读取oracle中blob字段的图片并且显示到pictureBox里,保存进库
- c# cs显示字段为blob类型的图片数据
- JAVA读取Oracle中的blob图片字段并显示
- 通过URLHttpConnection方式来取得图片,并且显示在ImageView上
- JAVA读取Oracle中的blob图片字段并显示
- JAVA读取Oracle中的blob图片字段并显示
- 从Oracle中数据库中读取以Blob类型存储的图片显示在jsp页面中
- Java —— JAVA读取Oracle中的blob图片字段并显示
- Oracle 11g PL/SQL程序块,存储图片等BLOB字段类型的列PL/
- (springmvc)从oracle读取blob类型图片并在jsp中显示
- JAVA读取Oracle中的blob图片字段并显示
- 通过URLHttpConnection方式来取得图片,并且显示在ImageView上
- JAVA读取Oracle中的blob图片字段并显示
- JAVA读取Oracle中的blob图片字段并显示
- 往Blob类型字段插入图片,使用与MySql或者Oracle
- Oracle中插入图片并显示(用BLOB类型)
- 【C#,Oracle】 Image图片类型与blob,base64之间的互转
- JAVA读取Oracle中的blob图片字段并显示