保存文件名与保存其他字符型数据的方法相同,其代码如下:
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.0Data Source=" &App.Path &"\db_wjgl.mdbPersist Security Info=False"
cn.Open cnnstr
Adodc1.ConnectionString = cnnstr
Set Picture1.DataSource = Adodc1
Picture1.DataField = "文件"
End Sub
图片是可以存储到数据库中的,只是把它转化成二进制数据保存进去。但是这样的方式,将会使得数据库异常庞大。占用数据库资源。所以并不是主流的存储方式。通常我们存储图片进入数据库的做法是,保存一个地址给数据库,而图片是采用别的方法存储到服务器磁盘中的。
比如,使用FTP方式将图片保存到服务器D:\PIC文件夹。在服务器数据库中只要记录D:\PIC\1.JPG。那么读取图片的时候数据库中读取图片文件名或地址,那么就可以在FTP中取得。
access是微软发布的一款关系型数据库。access数据库保存图片的方法很多,可以通过vb,c++,php,asp等开发语言实现;也可以直接向access数据库插入图片进行保存。下面演示直接插入步骤:
1、打开access数据库,新建一张数据表(存储图片的字段类型选择:OLE 对象);
2、新建好,保存!然后再打开;右击图像控件,选择插入对象;
3、选中:由文件创建(F);然后点击浏览按钮,选择要保存的图片;最后,点击确定按钮;
4、同时按下Ctrl+S,对插入数据进行保存。保存成功后,图片控件会显示Package;
5、双击:图片控件(Package位置),会看到图片的预览;
6、这样,一张图片就保存到access数据库里去了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)