vb程序 怎么把图片写入数据库并读出来显示?
我用的access数据库..字段设置成了OLE对象、、、
补充:我想把图片以二进制形式存进数据库!用CommonDialog1.Action = 1 找到电脑上图片 在存放到数据库
能给些代码吗? 给+++分 谢谢
答案:1.使用存取文件路径的方法存取图片
保存文件名与保存其他字符型数据的方法相同,其代码如下:
Dim photoFilename as String
photoFilename = CommonDialog1.FileName
rs1.AddNew
rs1.Fields("photo")= photoFilename
rs1.Update
2.使用AppendChunk方法将二进制文件存入数据库中
下面使用AppendChunk方法将不同类型的文件存入到数据库中,程序主要代码如下:
Const BLOCKSIZE = 4096
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Private Sub SaveToDB(ByRef Fld As ADODB.Field, DiskFile As String)
'定义数据块数组
Dim byteData() As Byte
'定义数据块个数
Dim NumBlocks As Long
Dim FileLength As Long
'定义剩余字节长度
Dim LeftOver As Long
Dim SourceFile As Long
Dim i As Long
'判断文件是否存在
If Dir(DiskFile) <> "" Then
SourceFile = FreeFile
'打开二进制文件
Open DiskFile For Binary Access Read As SourceFile
FileLength = LOF(SourceFile)
'判断文件是否空
If FileLength = 0 Then
Close SourceFile
MsgBox DiskFile & "文件无内容,请重新指定文件!", vbExclamation, "注意"
Else
'得到数据块的个数
NumBlocks = FileLength \ BLOCKSIZE
'得到剩余字节数
LeftOver = FileLength Mod BLOCKSIZE
Fld.Value = Null
ReDim byteData(BLOCKSIZE)
For i = 1 To NumBlocks
Get SourceFile, , byteData()
'用Appendchunk方法将byteData()数据写入FLD
Fld.AppendChunk byteData()
DoEvents
Next i
'将剩余数据写入FLD
ReDim byteData(LeftOver)
Get SourceFile, , byteData()
Fld.AppendChunk byteData()
Close SourceFile
End If
Else
MsgBox "文件不存在,请重新指定文件!", vbExclamation, "注意"
End If
End Sub
3.使用Stream对象将二进制文件存入数据库
在ADO2.5以上版本中提供了一个Stream对象,该对象的引入大大简化了二进制字段的存取操作,但使用前需要引用ADO 2.5Library以上的版本
下面使用Stream对象将各种类型的文件存入到数据库中,程序代码如下:
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim mst As New ADODB.Stream
Private Sub cmdSave_Click()
rs.Open "select * from 文件表", cn, adOpenDynamic, adLockOptimistic
rs.AddNew
rs.Fields("名称") = Text1.Text
mst.Type = adTypeBinary
mst.Open
If Text2.Text <> "" Then mst.LoadFromFile Text2.Text
rs.Fields("文件") = mst.Read
rs.Update
mst.Close
rs.Close
End Sub
Private Sub Command1_Click()
On Error GoTo Err
CommonDialog1.Filter = "所有文件(*.*)|*.*"
CommonDialog1.ShowOpen
Text2.Text = CommonDialog1.FileName
Exit Sub
Err:
MsgBox Err.Description
End Sub
Private Sub Form_Load()
Dim cnnstr As String
cnnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db_wjgl.mdb;Persist Security Info=False"
cn.Open cnnstr
Adodc1.ConnectionString = cnnstr
Set Picture1.DataSource = Adodc1
Picture1.DataField = "文件"
End Sub
建议你把图片存放在文件夹里,用数据库来存放相对路径,然后用Picturebox1.picture=LoadPicture(ado.fields(0))的方法
将picturebox与数据的OLE字段绑定
上次有看到,没保存,这次又找了一个,虽然不一样,但是还是不3错的可以保存到SQL里面,呵 http://bbs.bc-cn.net/thread-248470-1-1.html
上一个:VB程序设计考卷上的一道题怎么做?
下一个:vb.net谁有什么好的学习经验~