如何在VB中将图片存入数据库,并且从数据库读出显示到界面上

如题所述

首先你没有说明是什么数据库
我先以access数据库为例:
数据库:
info表
name段,photo段(设置为ole对象)

Dim Constr As String 'ODBC路径
Dim Filename As String '图片文件名
Const BLOCKSIZE = 4096 '每次读写块的大小
Dim ADOCon As New ADODB.Connection 'ADODB Connection对象
Dim ADORst As New ADODB.Recordset 'ADODB Recordset对象
Dim ADOFld As ADODB.Field 'ADODB Field对象
Public Function SaveFileToDB(ByVal Filename As String, dbField As ADODB.Field, Optional PackageSize As Long = 8192&) As Long
On Error GoTo errHandle
Dim lngActualSize As Long, lngCurrentSize As Long
Dim bTemp() As Byte
Dim hFile As Long
Dim i As Integer
Dim lChunkCount As Long
Dim lChunkRemainder As Long
lngActualSize = FileLen(Filename)
lngCurrentSize = 0
If lngActualSize <= 0 Then
Err.Raise ERR_SIZE_EQU_OR_LESS_ZERO, "writeFileToDB"
End If
'读取文件内容
hFile = FreeFile()
Open Filename For Binary As hFile
ReDim bTemp(PackageSize) '临时存贮块
lChunkCount = LOF(hFile) \ PackageSize '取块数
lChunkRemainder = LOF(hFile) Mod PackageSize
If lChunkRemainder > 0 Then lChunkCount = lChunkCount + 1
For i = 1 To lChunkCount
Get hFile, , bTemp '从文件中取出一块
dbField.AppendChunk (bTemp) '将块写入字段中
Next
Close #1
SaveFileToDB = 0
Exit Function
errHandle:
SaveFileToDB = Err.Number
End Function
Public Function GetFileFromDB(dbField As ADODB.Field, vdata As Variant, Optional PackageSize As Long = 8192&) As Long
' Optional ByVal SaveAs As String = "",
'如果SaveAs为空串则保存在vData这个变体类型中,否则保存在文件中
On Error GoTo errHandle
Dim i%, lngActualSize As Long, lChunkCount As Long
Dim vTemp As Variant, bTemp() As Byte
Dim hFile As Long
lngActualSize = dbField.ActualSize
If lngActualSize <= 0 Then
Err.Raise ERR_SIZE_EQU_OR_LESS_ZERO, "getFileFromDB"
End If
lChunkCount = lngActualSize \ PackageSize
If (lngActualSize Mod PackageSize <> 0) Then
lChunkCount = lChunkCount + 1
End If
hFile = FreeFile()
'Open "" & App.Path & "" & " \Temp.Temp" For Binary As hFile
Open "" & App.Path & "" & "\Temp.Temp" For Binary As hFile
For i = 1 To lChunkCount
bTemp = dbField.GetChunk(PackageSize)
Put #hFile, , bTemp
Next
Close
GetFileFromDB = 0
Exit Function
errHandle:
GetFileFromDB = Err.Number
End Function
Private Sub cmdGet_Click()
'重新打开记录集,刷新记录
Set ADORst = Nothing
Set ADOCon = Nothing
ADOCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "" & "\照片库.mdb;Persist Security Info=False"
ADORst.Open "select * from Info Where Name='" & UserNames.Text & "'", ADOCon, adOpenDynamic, adLockOptimistic
'打开一个ADO动态集 表名为table
If ADORst.EOF = False Then
Else
MsgBox "没有这条记录", vbCritical, "提示:"
Exit Sub
End If
Set Adodc1.Recordset = ADORst '将动态集赋给ADO控件
Set ADOFld = ADORst("Photo") '给ADODB.Field对象赋值
Call GetFileFromDB(ADOFld, vdata) '调用字程序,给第三个字段(image)赋值
Image1.Picture = LoadPicture("" & App.Path & "" & "\Temp.Temp") '从临时文件加载图片
Kill ("" & App.Path & "" & "\Temp.Temp") '删除临时文件
End Sub
Private Sub cmdPreView_Click()
'显示打开文件的公用对话框,选择需要加入数据库的图片
CommonDialog1.Filter = "图片文件|*.bmp;*.ico;*.jpg;*.gif;*.jpeg"
CommonDialog1.ShowOpen
Filename = CommonDialog1.Filename
Text1.Text = CommonDialog1.Filename
Image0.Picture = LoadPicture(Filename) '预览图片
End Sub
Private Sub cmdSave_Click()
Set ADORst = Nothing
Set ADOCon = Nothing
ADOCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "" & "\照片库.mdb;Persist Security Info=False"
ADORst.Open "select * from Info Where Name='" & txtAddName.Text & "'", ADOCon, adOpenDynamic, adLockOptimistic
'打开一个ADO动态集 表名为table
Set Adodc1.Recordset = ADORst '将动态集赋给ADO控件
If ADORst.EOF = True Then
ADORst.AddNew '新增记录
ADORst("Name").Value = txtAddName.Text '给动态集的第一个字段赋值
'ADORst("ID").Value = txtAddID.Text '给动态集的第二个字段赋值
Set ADOFld = ADORst("Photo") '给ADODB.Field对象赋值
Call SaveFileToDB(Filename, ADOFld) '调用字程序,给第三个字段(image)赋值
ADORst.Update
Else
MsgBox "已有此条记录", vbCritical, "提示:"
End If
End Sub
Private Sub cmdUpdate_Click()
'重新打开记录集,刷新记录
ADORst.Close
ADOCon.Close
Set ADORst = Nothing
Set ADOCon = Nothing
ADOCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "" & "\照片库.mdb;Persist Security Info=False"
ADORst.Open "select * from Info", ADOCon, adOpenDynamic, adLockOptimistic
Set Adodc1.Recordet = ADORst
End Sub
Private Sub Form_Unload(Cancel As Integer)
'记得关闭打开的数据库,释放资源
Set ADORst = Nothing
Set ADOCon = Nothing
End Sub
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-07-28
数据库中表的字段有一种叫备注型或SQL Server好像有二进制类型的字段的,图片可采用二进制方式存取。
但建议您不要这么做
您可以讲文件的路径存入数据库,比较合适
然后用picturebox加载路径下的图片
要是图片不在本地,您可以使用异步加载的方式,读取远程图片本回答被提问者采纳
第2个回答  2009-07-14
用open把图片变成二进制数据Briny,. 存在一个变量里面,然后将变量里的东东传到数据库~
第3个回答  2020-04-10
你说的应该是数据引擎吧
数据库的种类不是哪个语言分的
常见的关系数据库有sql
server,
oracle,access,my
sql,
db2,dbf等了
非关系数据库现在比较多的是结构化数据库
最常见就是xml数据库(思想跟xml文件差不多
但是xml文件区别于xml数据库
不是一个概念)
如果你问的是数据引擎了
vb一般就是dao
rdo
ado吧?

如何在VB中将图片存入数据库,并且从数据库读出显示到界面上
info表 name段,photo段(设置为ole对象)Dim Constr As String 'ODBC路径 Dim Filename As String '图片文件名 Const BLOCKSIZE = 4096 '每次读写块的大小 Dim ADOCon As New ADODB.Connection 'ADODB Connection对象 Dim ADORst As New ADODB.Recordset 'ADODB Recordset对象 Dim ADOFld As ADODB....

使用vb编程如何从mdb数据库中写入,读出图像?
MyData.DatabaseName = strPath & "ExampleDB.mdb" '数据库存地址 MyData.RecordSource = "Info" '表名 第二步,添加Image控件用来显示图片,设置它的DataSource和DataField属性。例如本例中: Image1.DataSource="MyData"和Image1.DataField=" MyPhoto" 。然后设置其它具有数据绑定功能的控件用来显...

vb如何将jpg图片存入数据库及其读取方法
Sub LoadPictureFromDB(cn As ADODB.Connection)'载数据库中读出图片 On Error GoTo EH Dim strTemp As String Set stm = New ADODB.Stream strTemp = "c:\/temp.tmp" '临时文件,用来保存读出的图片 rs.Open "select ImagePath,ImageValue ...

VB 怎么把相片存放到ACCESS数据库里面,还可以取出来?
Get #1, , strb ' 读到内存块中 Adodc1.Recordset.Fields("照片").AppendChunk strb 要用Appendchunk将照片加入到数据库 Adodc1.Recordset.Update Close #1 前提是你首先要有一个通用对话框。然后有一个ADO与数据库相连。希望对你有所帮助。

VB中,关于ACCESS数据库中加入图片及在窗体上显示图片
用二进制存储。用get函数获取图片的二进制信息并保存。用ADODB.Stream对象从数据库读取数据并保存为图片文件。并在image控件加载显示。

如何将数据库中的图片(二进制),读出并显示在界面的Image控件?[VB...
Public strImgN As String '图片路径 把picture或者image存储成图片 Public BImg() As Byte '###写入数据库 Public Sub Image() 'On Error Resume Next Dim IntNum As Integer IntNum = FreeFile Open strImgN For Binary As #IntNum ReDim BImg(FileLen(strImgN))Get #IntNum, ...

亲啊我怎么把图片存入到数据库呢,然后再显示出来
在数据库中存放图片的路径显示的话,在页面上绑定数据库的字段名试试吧~ 追问 若若的问下如何把图片的路径存入到数据库面啊 追答 显示图片应该是在前台吧!存放图片在后台,在后台找到添加数据的地方,图片路径就是打开图片所在的位置,将地址栏的路径拷下来就行~~~图片最好放在代码路径下 taojiahehe | 发布于201...

如何才能往数据库里读取图片数据或者从数据库里读图片
'从数据库中读取图像文件 Sub ReadFile()Dim Stm As New ADODB.Stream Dim Cnn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strCnn As String strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & _App.Path & "\\DB1.mdb"Cnn.Open ...

怎么做一个可以录入图片的数据库?
图片是可以放到数据库里面的,以ACCESS为例子,你要使用OLE数据类型,然后把图片转化为长二进制数据存入,读取的时候可以生成系统隐藏的图 片然后在图片控件中显示 我的回答肯定没错,因为这个东西我做过,如果还不明白可以到我的空间 里留言,然后留下联系方式,我会把代码给你,我使用的是VB,用VB把图片 放...

vb和数据库合起来运用: 怎么将一组9张图片存到数据库中,在vb中调用
图片的话最好还是不要存到数据库中吧,严重影响程序速度的。可以放到某个文件夹中,然后数据库中存图片路径就行了。如果一点要存到数据库中,MS需要把图片转换成2进制数据流才可以存到数据库中的。而且数据量十分庞大,读取出来速度也慢。

相似回答