1. 将以 .gif 文件格式存储的图像传输到 SQL Server 表的 Image 列 该示例代码将通过覆盖 pub_info 表的当前内容,将一个以 .gif 文件格式存储的图像保存到该表的第一条记录中,如下所示: 新建一个标准 EXE Visual Basic 工程。 在工程菜单上,单击选择引用,然后设置一个到 Microsoft ActiveX Data Objects 2.5 Object Library 的引用。 将 CommandButton 按钮放在 Form1 上。 在该窗体的常规声明段中作如下声明: Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim mstream As ADODB.Stream 将下面的代码剪切并粘贴到添加到该窗体的 CommandButton 所对应的 Click 事件中: Set cn = New ADODB.Connection cn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>; Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>"Set rs = New ADODB.Recordset rs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimisticSet mstream = New ADODB.Stream mstream.Type = adTypeBinary mstream.Open mstream.LoadFromFile "<path to .gif file>" rs.Fields("logo").Value = mstream.Read rs.Updaters.Close cn.Close 保存并运行该 Visual Basic 工程。 单击 CommandButton 运行该代码,即可将 .gif 文件的内容以数据流的方式传输到 ADO Stream 对象中,并将 Stream 中的数据保存到记录集内第一条记录的 logo 列。 请使用示例 1 中的代码,确认 logo 列中的图像已被修改。 2 在form上加image和adodc控件,之后image 邦定adodc
'将图片保存到数据库 '******************将图片文件保存到数据库中************************* Sub savePicToDB(cn As ADODB.Connection) Dim stm As ADODB.Stream Set stm = New ADODB.Stream Set rs1 = New ADODB.Recordset rs1.Open "select * from rs_http", cn1, adOpenKeyset, adLockOptimistic With stm .Type = adTypeBinary .Open .LoadFromFile dlg.FileName End With With rs1 .AddNew .Fields("tp") = stm.Read .Update End With rs1.Close Set rs1 = Nothing End Sub'将图片或者文件从数据库中读出 Sub GetPicFromDB(cn As ADODB.Connection) On Error Resume Next Dim fld As Field Dim strTemp As String Dim stm As ADODB.Stream Set stm = New ADODB.Stream 'strTemp = "c:\temp.bmp" Set rs1 = New ADODB.Recordset rs1.Open "select * from rs_http where htbh='" & frm_manage.Grid2.TextMatrix(frm_manage.Grid2.RowSel, 0) & "'", cn, , , adCmdText While Not rs1.EOF '*********将数据库中的文件读到硬盘上************************* ' strTemp = App.Path + "\temp\" + rs1!Name '`临时文件,用来保存读出的图片 With stm .Type = adTypeBinary .Open .Write rs1("tp").value strTemp = App.Path & "\temp1\" & rs1!Name .SaveToFile strTemp, adSaveCreateOverWrite .Close End With Set itemX = lvwPic.ListItems.Add(, App.Path & "\temp1\" & rs1!Name, rs1!Name, 1, 1) itemX.SubItems(1) = rs1!bz rs1.MoveNext Wend Set stm = Nothing rs1.Close Set rs1 = Nothing End Sub
读出image内容 If Not IsNull(G_Rs.Fields("bmp")) Then Set adoStream = New ADODB.Stream adoStream.Type = adTypeBinary adoStream.Open adoStream.Write G_Rs.Fields("bmp").GetChunk(G_Rs.Fields("bmp").ActualSize) TmpFile = App.Path + "\Temp\Zp.tmp" adoStream.SaveToFile TmpFile, IIf(Len(Trim(Dir(TmpFile, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist) imgPic.Picture = LoadPicture(TmpFile) adoStream.Close Set adoStream = Nothing End If 读入数据库 Dim adoStream As ADODB.Stream If PicPath <> "" Then Set adoStream = New ADODB.Stream adoStream.Type = adTypeBinary adoStream.Open adoStream.LoadFromFile PicPath G_Rs.Fields("bmp").AppendChunk adoStream.Read End If
该示例代码将通过覆盖 pub_info 表的当前内容,将一个以 .gif 文件格式存储的图像保存到该表的第一条记录中,如下所示:
新建一个标准 EXE Visual Basic 工程。
在工程菜单上,单击选择引用,然后设置一个到 Microsoft ActiveX Data Objects 2.5 Object Library 的引用。
将 CommandButton 按钮放在 Form1 上。
在该窗体的常规声明段中作如下声明: Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim mstream As ADODB.Stream
将下面的代码剪切并粘贴到添加到该窗体的 CommandButton 所对应的 Click 事件中: Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;data Source=<name of your SQL Server>;
Initial Catalog=pubs;User Id=<Your Userid>;Password=<Your Password>"Set rs = New ADODB.Recordset
rs.Open "Select * from pub_info", cn, adOpenKeyset, adLockOptimisticSet mstream = New ADODB.Stream
mstream.Type = adTypeBinary
mstream.Open
mstream.LoadFromFile "<path to .gif file>"
rs.Fields("logo").Value = mstream.Read
rs.Updaters.Close
cn.Close
保存并运行该 Visual Basic 工程。
单击 CommandButton 运行该代码,即可将 .gif 文件的内容以数据流的方式传输到 ADO Stream 对象中,并将 Stream 中的数据保存到记录集内第一条记录的 logo 列。
请使用示例 1 中的代码,确认 logo 列中的图像已被修改。
2 在form上加image和adodc控件,之后image 邦定adodc
'******************将图片文件保存到数据库中*************************
Sub savePicToDB(cn As ADODB.Connection)
Dim stm As ADODB.Stream
Set stm = New ADODB.Stream
Set rs1 = New ADODB.Recordset
rs1.Open "select * from rs_http", cn1, adOpenKeyset, adLockOptimistic
With stm
.Type = adTypeBinary
.Open
.LoadFromFile dlg.FileName
End With
With rs1
.AddNew
.Fields("tp") = stm.Read
.Update
End With
rs1.Close
Set rs1 = Nothing
End Sub'将图片或者文件从数据库中读出
Sub GetPicFromDB(cn As ADODB.Connection)
On Error Resume Next
Dim fld As Field
Dim strTemp As String
Dim stm As ADODB.Stream
Set stm = New ADODB.Stream
'strTemp = "c:\temp.bmp"
Set rs1 = New ADODB.Recordset
rs1.Open "select * from rs_http where htbh='" & frm_manage.Grid2.TextMatrix(frm_manage.Grid2.RowSel, 0) & "'", cn, , , adCmdText
While Not rs1.EOF
'*********将数据库中的文件读到硬盘上*************************
' strTemp = App.Path + "\temp\" + rs1!Name '`临时文件,用来保存读出的图片 With stm
.Type = adTypeBinary
.Open
.Write rs1("tp").value
strTemp = App.Path & "\temp1\" & rs1!Name
.SaveToFile strTemp, adSaveCreateOverWrite
.Close
End With
Set itemX = lvwPic.ListItems.Add(, App.Path & "\temp1\" & rs1!Name, rs1!Name, 1, 1)
itemX.SubItems(1) = rs1!bz
rs1.MoveNext
Wend
Set stm = Nothing
rs1.Close
Set rs1 = Nothing
End Sub
我在创智niit教材上看到用LoadPicture(rs.Fields("logo"))这样取数据集里边的数据显示的方法.但是自己写出来后不能显示.绑定倒是可以,但是这样做可不好,各位还有什么好办法没有?
可以的,设置image的datasource 和datafield
If Not IsNull(G_Rs.Fields("bmp")) Then
Set adoStream = New ADODB.Stream
adoStream.Type = adTypeBinary
adoStream.Open
adoStream.Write G_Rs.Fields("bmp").GetChunk(G_Rs.Fields("bmp").ActualSize)
TmpFile = App.Path + "\Temp\Zp.tmp"
adoStream.SaveToFile TmpFile, IIf(Len(Trim(Dir(TmpFile, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
imgPic.Picture = LoadPicture(TmpFile)
adoStream.Close
Set adoStream = Nothing
End If
读入数据库
Dim adoStream As ADODB.Stream
If PicPath <> "" Then
Set adoStream = New ADODB.Stream
adoStream.Type = adTypeBinary
adoStream.Open
adoStream.LoadFromFile PicPath
G_Rs.Fields("bmp").AppendChunk adoStream.Read
End If
http://expert.csdn.net/Expert/topic/2315/2315286.xml?temp=.2765619