VB中上传下载文件到SQL数据库
VB中上传下载文件到SQL数据库
编写人:左丘文
2015-4-11
近期在修改一个VB编写的系统时,想给画面增加一个上传文件到数据库,并可以下载查看的功能,今天在这里,我想与大家一起分享代码,在此做个小结,以供参考。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。
1、 首先要保存文件到数据库,我们需要使用流对象保存,所以第一时间先在数据库中增加
一个image的字段(注意:Access中的photo字段类型为OLE对象.SqlServer中的photo字段类型为Image),用于存储文件。

2、 下面再在画面增加用于上传及下载的CommandButton及一个commondialog:

1) 数据库连接处理
1 Private Sub Form_Load()
2 '数据库连接字符串
3 Connstring="Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
4 ";Data Source=d:\csdn_vb\database\保存图片\access图片\img.mdb"
5
6 ‘下面的语句是连接sqlserver数据库的.
7 ‘Connstring="Provider=SQLOLEDB.1;Persist Security Info=True;" & _
8 ‘"User ID=sa;Password=;Initial Catalog=test;Data Source=yang"
9 Set Conn = New ADODB.Connection
Conn.Open Connstring
End Sub
2) 上传文件处理

2 ** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
3 ‘.5版本以下不支持Stream对象
4
5 On Error GoTo handleErr
6 Dim rs As ADODB.Recordset
7 Dim mstream As ADODB.Stream
8
9 '保存文件到数据库中
Set rs = New ADODB.Recordset
With rs
.ActiveConnection = Conn
.LockType = adLockOptimistic
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.Open "SELECT * from SR WHERE SRNUM='" & txtSRNUM.Text & "'"
End With
CommonDialog1.Filter = "Pictures (*.PDF;*.pdf)|*.PDF;*.pdf"
CommonDialog1.ShowOpen
If CommonDialog1.filename = "" Then Exit Sub
If (rs.RecordCount = ) Then
'读取文件到内容
Set mstream = New ADODB.Stream
With mstream
.Type = adTypeBinary '二进制模式
.Open
.LoadFromFile CommonDialog1.filename
End With
rs.Fields("FileName").Value = CommonDialog1.FileTitle
rs.Fields("FileUploadTime").Value = Format(Now, "YYYY-MM-DD hh:mm")
rs.Fields("FileNameContent") = mstream.Read
rs.update
'完成后关闭对象
mstream.Close
End If
rs.Close
Set rs = Nothing
txtFileName.Text = CommonDialog1.FileTitle
Exit Sub
handleErr:
MsgBox ERR.Description
End Sub
3) 下载文件处理

2 On Error GoTo handleErr
3 Dim rs As ADODB.Recordset
4 Dim mstream As ADODB.Stream
5
6 Set rs = New ADODB.Recordset
7 With rs
8 .ActiveConnection = ConGamma
9 .LockType = adLockOptimistic
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.Open "SELECT * from SR WHERE SRNUM='" & txtSRNUM.Text & "'"
End With
If (rs.RecordCount = ) Then
If (rs("FileNameContent").ActualSize > ) Then ‘判断是否为空
'保存到文件
Set mstream = New ADODB.Stream
With mstream
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write rs("FileNameContent")
.SaveToFile "C:\8D.PDF" ‘‘这里注意了,如果当前目录下存在8D.PDF,会报一个文件写入失败的错误.
End With
'关闭对象
rs.Close
mstream.Close
End If
End If
Exit Sub
handleErr:
MsgBox ERR.Description
End Sub
具体就需要各位好好的去自已去调试了。
3、有关更多的技术分享,大家可以加入我们的技术群。
欢迎加入技术分享群:238916811
VB中上传下载文件到SQL数据库的更多相关文章
- 在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹)
在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹) 1 列出所有需要copy的sh文件 -bash-4.1$ ll /mysqllog/osw/*.sh ...
- 关于Ninja中上传下载文件
上传得时候 根据类型来判断一下: 然后下载的时候需要:在url的最后一个/ 后面加上你要下载的类型如/download/app.apk; 下载成功就是app.apk了;
- java web service 上传下载文件
1.新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress package com; import java.io.FileInputStream; imp ...
- rz和sz上传下载文件工具lrzsz
######################### rz和sz上传下载文件工具lrzsz ####################################################### ...
- SQLLite 可以通过SQL语言来访问的文件型SQL数据库
Web Storage分为两类: - sessionStorage:数据保存在session 对象中(临时) - localStorage:数据保存在本地硬件设备中(永久) sessionStorag ...
- linux上很方便的上传下载文件工具rz和sz
linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...
- shell通过ftp实现上传/下载文件
直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...
- SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例
本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...
- [转]python3之paramiko模块(基于ssh连接进行远程登录服务器执行命令和上传下载文件的功能)
转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.para ...
随机推荐
- 2018-2019-1 20189215 《Linux内核原理与分析》第六周作业
<庖丁解牛>第五章书本知识总结 system_call并不是一个普通的函数,只是一段汇编代码的起点,且内部没有严格遵守函数调用堆栈机制. 通过set_system_trap_gate函数绑 ...
- Log4j2报错ERROR StatusLogger Unrecognized format specifier
问题 使用maven-shade-plugin或者maven-assembly-plugin插件把项目打成一个可执行JAR包时,如果你引入了log4j2会出现如下问题: ERROR StatusLog ...
- 51nod 1042 数字0-9的数量
给出一段区间a-b,统计这个区间内0-9出现的次数. 比如 10-19,1出现11次(10,11,12,13,14,15,16,17,18,19,其中11包括2个1),其余数字各出现1次. Inp ...
- CF_400_D
codeforces_400_D 题目大意:给出n扇门,m把钥匙,和没把钥匙可以改变状态(关->开,开->关>)的门的数量及对应编号(保证每个门被两把钥匙控制),现给出n扇门的初始状 ...
- Android -- service的开启方式, start开启和绑定开启服务,调用服务的的方法, aidl调用远程服务
1. 概述 bindService() 绑定服务 可以得到服务的代理人对象,间接调用服务里面的方法. 绑定服务: 间接调用服务里面的方法. 如果调用者activity被销毁了, ...
- [转][osg]osg渲染引擎框架图,流程图(根据《最长一帧》整理)
转自:http://m.blog.csdn.net/article/details?id=49679731 本文参考<<osg最长一帧>>, <<OpenScene ...
- 《F4+2 团队项目需求分析改进》
a.分析<动态的太阳系模型项目需求规格说明书>初稿的不足. 任务概述描述的有些不具体,功能的规定不详细,在此次作业进行了修改. b.参考<构建之法>8.5节功能的定位和优先级, ...
- jquery和dom对象相互转化的方法
jQuery对象转成DOM对象: 两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index); (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得 ...
- 雷林鹏分享:Ruby 迭代器
Ruby 迭代器 迭代器是集合支持的方法.存储一组数据成员的对象称为集合.在 Ruby 中,数组和散列可以称之为集合. 迭代器返回集合的所有元素,一个接着一个.在这里我们将讨论两种迭代器,each 和 ...
- Python的第一次作业
题目1 : 描述:通过趣味的打怪来学习random随机函数. 代码: from random import * import types choc=0 hs=[100] numer=[randint( ...