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)         上传文件处理

 1 Private Sub cmdUpload_Click()
 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)         下载文件处理

 1 Private Sub cmdDownload_Click()
 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数据库的更多相关文章

  1. 在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹)

    在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹) 1 列出所有需要copy的sh文件 -bash-4.1$ ll /mysqllog/osw/*.sh ...

  2. 关于Ninja中上传下载文件

    上传得时候 根据类型来判断一下: 然后下载的时候需要:在url的最后一个/ 后面加上你要下载的类型如/download/app.apk; 下载成功就是app.apk了;

  3. java web service 上传下载文件

    1.新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress package com; import java.io.FileInputStream; imp ...

  4. rz和sz上传下载文件工具lrzsz

    ######################### rz和sz上传下载文件工具lrzsz ####################################################### ...

  5. SQLLite 可以通过SQL语言来访问的文件型SQL数据库

    Web Storage分为两类: - sessionStorage:数据保存在session 对象中(临时) - localStorage:数据保存在本地硬件设备中(永久) sessionStorag ...

  6. linux上很方便的上传下载文件工具rz和sz

    linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...

  7. shell通过ftp实现上传/下载文件

    直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...

  8. SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例

    本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...

  9. [转]python3之paramiko模块(基于ssh连接进行远程登录服务器执行命令和上传下载文件的功能)

    转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.para ...

随机推荐

  1. PhpStorm提高效率的使用方法及设置(快捷键)

    原文链接:https://my.oschina.net/chunto/blog/262954 快捷键: CTRL + D  复制当前行到下一行 或 复制选中内容到选中内容之后 CTRL + Y  删除 ...

  2. linux内核分析第七周-Linux内核如何装载和启动一个可执行程序

    一.可执行文件的创建 可执行文件的创建就是三步:预处理.编译和链接. cd Code vi hello.c #写入最简单的helloworld的c程序 gcc -E -o hello.cpp hell ...

  3. Ubuntu18.04 怎么开热点

    先说明,电脑上要有wifi适配器,而且连接wifi时,不能开热点 我的笔记本是双系统,现在介绍一下我的设置 在设置里打开热点这个应该会吧,但是热点密码不是自己设置的,而是随机生成的,本文重点介绍一下怎 ...

  4. git commit的规范

    https://www.yuque.com/fe9/basic/nruxq8#6c228def 制定一个 git commit 信息的提交规范是开发团队工作流必不可少的环节.试想一下,如果查看主分支上 ...

  5. POJ 2443 Set Operation(压位加速)

    http://poj.org/problem?id=2443 题意: 有1000个集合,每个集合有至多10000个数,之后输入多个询问,判断询问的两个数是否位于同一个集合. 思路: 位运算...很强大 ...

  6. 通过FISH和下一代测序检测肺腺癌ALK基因融合比较

    ALK FISH探针是FDA批准的用于检测肺癌患者中ALK重排的方法,这些患者可能受益于ALK激酶抑制剂.FISH测定在技术上可能具有挑战性并且难以解释.已经有研究者提出以ALK免疫组织化学和下一代测 ...

  7. windows java 环境变量配置

    第一步 找到系统设置环境变量的位置(windows 10): 控制面板\系统和安全\系统   点击 ‘高级系统设置’ 就可以看到   “环境变量”  了 第二步 设置3个路径 1.path (配置JD ...

  8. JSP 指令

    JSP 指令 JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言. 语法格式如下: <%@ directive attribute="value" %&g ...

  9. hihocoder1513

    https://hihocoder.com/problemset/problem/1513 五维偏序问题,直接bitset压位,复杂度O(n^2/32) (本来想写三维偏序,但是cdq不会只好写写五维 ...

  10. 给 C# Expression Evaluator 增加中文变量名支持

    由于一些特殊的原因,我的Expression里面需要支持中文变量名,但是C# Expression Evaluator会提示错误,在他的HelperMethods.IsAlpha()里面加上这么一段就 ...