针对二进制写入数据库的,给个函数你吧。
建议坚持学习和共享原则,不要公开要求私信联系,来吊其他人胃口(唉,为给楼主满意答案,我又在角落里翻出我有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编辑过]