我们通常会在数据库数据表内储存文数字之类的数据,不过在某些时候,我们也会直接将照片等二进制影像数据储存在字段中。有使用许多朋友询问,在网页上新增数据记录时,如何让用户能够一并选取图片并写入varbinary(max) 类型的字段中,我们撰写了一个网页范例来示范如何实作。以下是这一个网页范例的操作流程:<?xml:namespace prefix = o />
1.           请如图表 1 所示,按下「先于数据库中建立所需的数据表」按钮,此举会在「北风贸易」数据库中建立一个名称为「练习作者」的数据表,以便用来储存包括照片在内的数据记录。

基本上,此按钮的Click事件处理例程会在SQL Server Express上执行以下的陈述式来建立「练习作者」数据表:

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id =
     OBJECT_ID(N'[dbo].[练习作者]') AND type in (N'U'))
DROP TABLE [dbo].[练习作者];

CREATE TABLE [dbo].[练习作者] ( 
    作者编号 int IDENTITY(1,1) NOT NULL,
    作者姓名 nvarchar(10) NULL ,
    作者电话 nvarchar(20) NULL ,
    作者玉照 varbinary(max) NULL)

图表 1
2.           请如图表 2 所示,按下「浏览」按钮来选取照片。
图表 2
3.           请如图表 3 所示,于「选择文件」对话框中选取所需的照片并按下「开启」按钮。
图表 3
4.           请如图表 4 所示,按下「储存」按钮。
图表 4
5.           反复上述步骤的操作,直到您已新增完毕所需的各笔数据记录之后,请如图表 5 所示,按一下超级链接「检视数据表的照片数据」以便检视我们所所上传并写入至数据库字段的数据。
图表 5
了解了网页范例的操作方式之后,我们要来检视其开发技巧。我想,本范例最关键的技巧,就是如何将 FileUpload 控件上传至Web服务器之照片文件的字节数组,并将其带入 INSERT 陈述式的参数中。此项作业的程序代码撰写于「上传并写入数据库」按钮的 Click 事件处理例程中,兹列示如下:
Protected Sub btnUpload_Click(ByVal sender As Object, _
  ByVal e As System.EventArgs) Handles btnUpload.Click
  If Not Me.FileUpload1.HasFile Then
      Me.lblMessage.Text = "您必须所选一张照片。"
      Return
  End If

' 利用 SqlConnectionStringBuilder 对象来构建连接字符串。
  Dim connectStringBuilder As New SqlConnectionStringBuilder()
  connectStringBuilder.DataSource = "(local)\SQLExpress"
  connectStringBuilder.InitialCatalog = "北风贸易"
  connectStringBuilder.IntegratedSecurity = True

Try
     ' 建立连接。
     Using con As New SqlConnection(connectStringBuilder.ConnectionString)

        Dim fileLen As Integer

        ' 取得上传之照片档的长度。

        fileLen = FileUpload1.PostedFile.ContentLength

        ' 建立一个字节数组来持有文件的内容。
        Dim Input(fileLen) As Byte
        Input = FileUpload1.FileBytes

        Dim updateCMD As SqlCommand = New SqlCommand( _
          "INSERT INTO 练习作者 (作者姓名, 作者电话, 作者玉照) " & _
          "VALUES (@AuthorName, @TelePhone, @Photo)", con)

Dim AuthorNameParameter As SqlParameter = _
          New SqlParameter("@AuthorName", SqlDbType.NVarChar, 10)
        If Me.txtAuthorName.Text.Trim().Equals("") Then
            AuthorNameParameter.Value = "章立民研究室"
        Else
            AuthorNameParameter.Value = Me.txtAuthorName.Text.Trim()
        End If
        updateCMD.Parameters.Add(AuthorNameParameter)

Dim TelephoneParameter As SqlParameter = _
          New SqlParameter("@TelePhone", SqlDbType.NVarChar, 20)
        If Me.txtAuthorName.Text.Trim().Equals("") Then
            TelephoneParameter.Value = "(02)123456789"
        Else
            TelephoneParameter.Value = Me.txtTelephone.Text.Trim()
        End If
        updateCMD.Parameters.Add(TelephoneParameter)

        Dim PhotoParameter As SqlParameter = _
          New SqlParameter("@Photo", SqlDbType.Image)
        PhotoParameter.Value = Input
        updateCMD.Parameters.Add(PhotoParameter)

con.Open()
        updateCMD.ExecuteNonQuery()
        con.Close()

Me.lblMessage.Text = "成功新增数据记录"
     End Using
  Catch ex As Exception
      Me.lblMessage.Text = "发生错误" & vbCrLf & ex.ToString
      Throw New Exception(ex.Message)
  End Try
End Sub

我们在Visual Basic 2005 文件 IO 与数据存取秘诀」Visual C# 2005 文件 IO 与资料存取秘诀」这两本书的第七章对于“大型对象(LOB) 的存取秘诀”有深入的探讨,请自行参考之。
另外,我们会找个时间来谈谈ASP.NET AJAX之 UpdatePanel 控件与FileUpload 控件的兼容性问题。
 

转载于:https://blog.51cto.com/liminzhang/53233

ASP.NET 2.0 - 如何于网页上新增包括图片在内的数据至数据库相关推荐

  1. ASP.NET 2.0 - 如何把上传的文件保存到数据库字段 (转自章立民CnBlogs)

    许多朋友询问如何将用户在网页上所选取的图片写入数据库字段,我们撰写了一个网页范例来示范如何实作.以下是这一个网页范例的操作流程: 1.           请如图表 1 所示,按下「先于数据库中建立所 ...

  2. HTML之如何在你的网页上放小姐姐图片

    是我,我又来了( ゜- ゜)つロ 今天来教大家如何在自己的网页上放小姐姐图片,是不是非常期待呢 废话不多说了,直接讲标签 图片 img标签用于在网页中放置图片 <img src="&q ...

  3. 基于ZYNQ的网页上传BMP图片至HDMI端口输出实例

    目录 Change Log 0 前言 0.1 系统实现 0.2 源码下载 0.3 项目信息 1 ZYNQ开发板HDMI输出BMP图片功能:FPGA相关 1.1 系统框图 1.2 RTL图 1.3 Bl ...

  4. 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能...

    原文:与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能 [源码下载] 与众不同 windows phone (40 ...

  5. JAVA中的GridView每一个赋值,在ASP.NET 2.0中操作数据之六十二:GridView批量更新数据...

    导言: 在前面的教程,我们对数据访问层进行扩展以支持数据库事务.数据库事务确保一系列的操作要么都成功,要么都失败.本文我们将注意力转到创建一个批更新数据界面. 在本文,我们将创建一个GridView控 ...

  6. html引入png不显示透明北京,解决在网页上显示PNG图片底色不透明的方法

    来源: 网易博客 类别: 编程 作者: 阿拉蕾 发布时间: 2009-9-7 22:09:18 很多时间,我们需要在网页上插入一些没有底色,只有轮廓的图片,而常用的底色透明的图片的有GIF和PNG,如 ...

  7. HTML在网页上不能显示图片问题

    我遇到的问题是写了一个HTML程序,结果在网页上面不能显示,原因是图片路径放置错了. 修改前代码: <!DOCTYPE html> <html> <head> &l ...

  8. 解决在网页上显示PNG图片底色不透明的方法

    来源: 网易博客 类别: 编程 作者: 阿拉蕾 发布时间: 2009-9-7 22:09:18 很多时间,我们需要在网页上插入一些没有底色,只有轮廓的图片,而常用的底色透明的图片的有GIF和PNG,如 ...

  9. ASP.NET 2.0与SQL Express 2005在迁移到Windows 2003时发生数据库为只读的错误

    ASP.NET 2.0和SQL Server Express 2005结合进行网站开发时,在VS 2005中运行时没有任何问题.当网站发布在Win Server 2003时,就会出现数据库无法访问的错 ...

最新文章

  1. IOI2011 BZOJ2600 ricehub
  2. rtx3090 pytorch_RTX 3090显卡8K游戏测试演示 《暗黑3》稳定60帧运行
  3. WebGL 利用FBO完成立方体贴图。
  4. 买卖股票的最佳时机含手续费
  5. R语言——str函数
  6. 又一个时代结束了!Adobe宣布在2020年彻底停止Flash更新
  7. 升级LINUX内核(支持8G内存)的命令
  8. 羊毛之家,青龙脚本,几乎全部可用
  9. 一步一步跟着杨中科.net视频学c#基础(1)
  10. 浅谈I2S协议、PDM麦克风
  11. 国内游戏产业现状十一谈
  12. Javase基础思维导图
  13. 博弈论个人的一点小总结
  14. 计算机设备属于什么会计科目,​机器设备属于什么会计科目
  15. RecorderManager安卓仿微信自定义音视频录制第三方库
  16. Python常见方法(5)-dictionary的可更改性和创建、增删元素、拼接和由list生成dictionary详解
  17. unity 中Line Renderser初始化有额外线段
  18. 解决了,佳能R6相机DAT/MP4视频文件修复卡顿无声问题
  19. redirect-重定向
  20. java mysql 有什么用_java web mysql 入门知识讲解

热门文章

  1. 小程序web开发框架-weweb介绍 1
  2. 解决安卓中XML文件声明高度 宽度无效的问题
  3. Css3中的响应式布局的应用
  4. “敏捷”联袂“ALM” 上演市场模范夫妻秀
  5. nginx location 配置
  6. 字符串转化为整型,为0,而不是1
  7. request,response,session
  8. Android 获取手机总内存和可用内存等信息
  9. Android Studio 智能感知无效
  10. poj 2186(强连通分量)