怎样将图片存入数据库

leeyun 2004-04-03 05:55:49
如题
...全文
106 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qyii 2004-04-04
  • 打赏
  • 举报
回复
源码下载~~且看:
http://itbooks.web165.com/bbs/upload/2003102312205484366.zip
Ringfo 2004-04-04
  • 打赏
  • 举报
回复
本质上就是要通过临时文件实现(或API函数辅助)
问题的关键在于VB获得图片的字节信息困难
zzdonevb 2004-04-04
  • 打赏
  • 举报
回复
Dim Constr As String 'ODBC路径
Dim FileName As String '图片文件名
Const BLOCKSIZE = 4096 '每次读写块的大小
Dim ADOCon As New ADODB.Connection ' ADODB Connection对象
Dim ADOFld As ADODB.Field 'ADODB Field 对象
Public ADORst As New ADODB.Recordset 'ADODB Recordset 对象
Private Sub SaveToDB(ByRef Fld As ADODB.Field, DiskFile As String) '--------------------API函数??????????
Dim byteData() As Byte '定义数据块数组
Dim NumBlocks As Long '定义数据块个数
Dim FileLength As Long '标识文件长度
Dim LeftOver As Long '定义剩余字节长度
Dim SourceFile As Long '定义自由文件号
Dim i As Long '定义循环变量
SourceFile = FreeFile '提供一个尚未使用的文件号
Open DiskFile For Binary Access Read As SourceFile '打开文件
FileLength = LOF(SourceFile) '得到文件长度
If FileLength = 0 Then '判断文件是否存在
Close SourceFile
MsgBox DiskFile & " 无 内 容 或 不 存 在 !"
Else
NumBlocks = FileLength \ BLOCKSIZE '得到数据块的个数
LeftOver = FileLength Mod BLOCKSIZE '得到剩余字节数
Fld.Value = Null
ReDim byteData(BLOCKSIZE) '重新定义数据块的大小
For i = 1 To NumBlocks
Get SourceFile, , byteData() ' 读到内存块中
Fld.AppendChunk byteData() '写入FLD
Next i
ReDim byteData(LeftOver) '重新定义数据块的大小
Get SourceFile, , byteData() '读到内存块中
Fld.AppendChunk byteData() '写入FLD
Close SourceFile '关闭源文件
End If
End Sub
Private Sub Form_Load()
ConnectString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ckgl;Data Source=d04"
AdoCtr.ConnectionString = ConnectString
ADOCon.ConnectionString = ConnectString
ADOCon.Open
Save.Enabled = False
ADORst.Open "select * from stuxx", ADOCon, 3, 3
Set AdoCtr.Recordset = ADORst '将动态集赋给ADO控件
ADORst.Close
End Sub
Private Sub Form_Unload(Cancel As Integer)
'记得关闭打开的数据集,释放资源
ADOCon.Close
Set ADORst = Nothing
Set ADOCon = Nothing
End Sub
Private Sub PreView_Click()
'显示打开文件的公用对话框,选择需要加入数据库的图片
CDlg.Filter = "位图(*.bmp)|*.bmp"
CDlg.ShowOpen
FileName = CDlg.FileName
PicBox.Picture = LoadPicture(FileName) '预览图片
Save.Enabled = True
End Sub
Private Sub Save_Click()
Dim ADORst As New ADODB.Recordset 'ADODB Recordset 对象
ADORst.Open "stuxx", ADOCon, 3, 3
ADORst.AddNew '新增纪录
ADORst.Fields("姓名").Value = Names.Text '给动态集的第一个字段赋值
ADORst("编号").Value = Numb.Text '给动态集的第二个字段赋值
Set ADOFld = ADORst("照片") '给ADODB.Field对象赋值
Call SaveToDB(ADOFld, FileName) '调用子程序,给第三个字段(image)赋值
ADORst.Update
ADORst.Close
End Sub
Private Sub Update_Click() '---------------------------------------------更新不起作用????????????
ConnectString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ckgl;Data Source=d04"
'重新打开纪录集,刷新纪录
ADOCon.Close
AdoCtr.ConnectionString = ConnectString
ADOCon.ConnectionString = ConnectString
ADOCon.Open
ADORst.Open "stuxx", ADOCon, adOpenDynamic, adLockOptimistic
Set AdoCtr.Recordset = ADORst
ADORst.Close
End Sub

northwolves 2004-04-04
  • 打赏
  • 举报
回复
看这里:
http://www.freevbcode.com/ShowCode.Asp?ID=485
anbry 2004-04-03
  • 打赏
  • 举报
回复
我也想知道这个问题能清楚的解释吗(代码)
pcwak 2004-04-03
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2403/2403509.xml?temp=.9905817
nccxf 2004-04-03
  • 打赏
  • 举报
回复
按BITE方式读出图片存八数据库

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧