注册 登录
编程论坛 VB6论坛

VB6.0中,如何将照片存储到ACCESS数据中,求代码?以及方法?

wangyiaihu 发布于 2020-05-27 15:05, 4251 次点击
VB6.0中,如何将照片存储到ACCESS数据中,求代码?以及方法?

11 回复
#2
ZHRXJR2020-05-27 16:20
Access数据库存储图片大概有三种方法:
1、是将图片放在一个目录里,数据库存储目录路径及图片文件名和扩展名
2、是将图片转换成二进制数据,在Access数据库的 OLE 对象 数据类型中存储二进制数据
3、是使用 ADO 的 Stream 对象存储在Access数据库的 OLE 对象 数据类型中
具体看需要了,代码太多,根据数据库不同,代码也不同。
#3
wangyiaihu2020-05-28 05:14
回复 2楼 ZHRXJR
第二种,转换成二进制的那种存储,相要的是这种,
#4
wmf20142020-05-28 09:40
百度一下一大堆。
#5
风吹过b2020-05-28 09:48
#6
dpf5202020-05-28 11:29
学习中
#7
ZHRXJR2020-05-28 19:05
回复 3楼 wangyiaihu

一般已经操作数据库了,均采用第三种方法,代码简单,非常容易操作,使用 ADO 的 Stream 对象操作在Access数据库的 OLE 对象 。
当然必须有存储图片的系统管理员上传代码及用户读取图片点代码,QQ 联系我。
#8
wangyiaihu2020-05-29 15:35
回复 7楼 ZHRXJR
好的
#9
wmf20142020-05-29 16:26
针对二进制写入数据库的,给个函数你吧。
建议坚持学习和共享原则,不要公开要求私信联系,来吊其他人胃口(唉,为给楼主满意答案,我又在角落里翻出我有VB编写环境的05年的笔记本了。该函数已调试通过):
程序代码:
Function writedb_bin(Filename As String, rst As ADODB.Recordset, Fieldname As String) As Boolean
  '以二进制模式读取文件Filename并将读取数据以二进制模式写入到数据库记录集rst的二进制字段Fieldname中
  Dim b() As Byte, i As Long, l As Long, f As Long, m As Long
  On Error Resume Next    '设置错误处理模式
  Err.Clear
  writedb_bin = False
  If Dir(Filename) = "" Or rst.State = 0 Then Exit Function  '如果要写入的文件不存在或记录集是关闭状态则返回false
  l = FileLen(Filename)   '获取文件长度
  i = l \ 16384           '二进制文件缓冲长度按16384字节读取,得到读取次数
  m = l Mod 16384         '文件缓冲读取次数读完后剩余字节数(文件长度不一定是16384的整数倍)
  f = FreeFile            '获取一个空余的文件号
  ReDim b(16383)          '设置文件读入缓冲区
  Open Cmdg.Filename For Binary Access Read As f
  '按二进制模式读入文件并写入数据库指定字段中
    While i > 0
      Get #f, , b
      rst.Fields(Fieldname).AppendChunk b    '按16384字节写入数据库指定字段
      DoEvents
      i = i - 1
    Wend
    If m > 0 Then
      ReDim b(m - 1)
      Get #f, , b
      rst.Fields(Fieldname).AppendChunk b       '将余下字节写入数据库指定字段
    End If
  Close #f
  If Err.Number = 0 Then writedb_bin = True  '如果错误代码为0则返回写入成功标志
End Function


假设已建立数据库连接conn,该数据库中有一个数据表“二进制文件读写测试表”,该表中有一个属性为binnary的字段“二进制字段”,调用上述函数的测试代码如下:
dim rst as new adodb.recordset
rst.open "select * from 二进制文件读写测试表",conn, adOpenKeyset, adLockOptimistic
rst.addnew
if writedb_bin("c:\test.jpg",rst,"二进制字段")=true then
  msgbox "图片写入数据库成功"
else
  msgbox "失败"
endif
rst.update
rst.close


[此贴子已经被作者于2020-5-29 16:56编辑过]

#10
wmf20142020-05-29 16:39
对了,读取二进制字段的方法是“rst.Fields(【字段名】).GetChunk(数据长度)”,希望楼主能由此及彼,自己解决读取方法,该方法可配合5楼风版主的方法一起使用,把数据直接读入到容器中,如果是图片,可以直接在图片控件中显示出来(我一般是写入到临时图片文件中在载入图片控件的)。
#11
wangyiaihu2020-05-31 19:22
回复 9楼 wmf2014
感谢!
有分享精神的人,才能在技术的巅峰站得更久,望的更远,谢谢~!
#12
wangyiaihu2020-05-31 19:24
回复 10楼 wmf2014
好的,我把你的这种方法尝试下,谢谢,
1