如何在SQL Server中保存和输出图片

2016-02-19 21:16 7 1 收藏

下面请跟着图老师小编一起来了解下如何在SQL Server中保存和输出图片,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

【 tulaoshi.com - 编程语言 】

  建表

  为了试验这个例子你需要一个含有数据的table(你可以在现在的库中创建它,也可以创建一个新的数据库),下面是它的结构:  

   Column Name
   Datatype
   Purpose
   ID
   Integer
   identity column Primary key
   IMGTITLE
   Varchar(50)
   Stores some user friendly title to identity the image
   IMGTYPE
   Varchar(50)
   Stores image content type. This will be same as recognized content types of ASP.NET
   IMGDATA
   Image
   Stores actual image or binary data.

  保存images进SQL Server数据库  

  为了保存图片到table你首先得从客户端上传它们到你的web服务器。你可以创建一个web form,用TextBox得到图片的标题,用HTML File Server Control得到图片文件。确信你设定了Form的encType属性为multipart/form-data。  

   Stream imgdatastream = File1.PostedFile.InputStream;
   int imgdatalen = File1.PostedFile.ContentLength;
   string imgtype = File1.PostedFile.ContentType;
   string imgtitle = TextBox1.Text;
   byte[] imgdata = new byte[imgdatalen];
   int n = imgdatastream.Read(imgdata,0,imgdatalen);
   string connstr=
   ((NameValueCollection)Context.GetConfig
   ("appSettings"))["connstr"];
   SqlConnection connection = new SqlConnection(connstr);
   SqlCommand command = new SqlCommand
   ("INSERT INTO ImageStore(imgtitle,imgtype,imgdata)
   VALUES ( @imgtitle, @imgtype,@imgdata )", connection );
   SqlParameter paramTitle = new SqlParameter
   ("@imgtitle", SqlDbType.VarChar,50 );
   paramTitle.Value = imgtitle;
   command.Parameters.Add( paramTitle);
   SqlParameter paramData = new SqlParameter
   ( "@imgdata", SqlDbType.Image );
   paramData.Value = imgdata;
   command.Parameters.Add( paramData );
   SqlParameter paramType = new SqlParameter
   ( "@imgtype", SqlDbType.VarChar,50 );
   paramType.Value = imgtype;
   command.Parameters.Add( paramType );
   connection.Open();
   int numRowsAffected = command.ExecuteNonQuery();
   connection.Close();  

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  从数据库中输出图片   

  现在让我们从数据库中取出我们刚刚保存的图片,在这儿,我们将直接将图片输出至浏览器。你也可以将它保存为一个文件或做任何你想做的。   private void Page_Load(object sender, System.EventArgs e)
   {
   string imgid =Request.QueryString["imgid"];
   string connstr=((NameValueCollection)
   Context.GetConfig("appSettings"))["connstr"];
   string sql="SELECT imgdata, imgtype FROM ImageStore WHERE id = "
   + imgid;
   SqlConnection connection = new SqlConnection(connstr);
   SqlCommand command = new SqlCommand(sql, connection);
   connection.Open();
   SqlDataReader dr = command.ExecuteReader();
   if(dr.Read())
   {
   Response.ContentType = dr["imgtype"].ToString();
   Response.BinaryWrite( (byte[]) dr["imgdata"] );
   }
   connection.Close();
   }   

  在上面的代码中我们使用了一个已经打开的数据库,通过datareader选择images。接着用Response.BinaryWrite代替Response.Write来显示image文件。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1625738.html

延伸阅读
为了防止某些别有用心的人从外部访问数据库,盗取数据库中的用户姓名、密码、信用卡号等其他重要信息,在我们创建数据库驱动的解决方案时,我们首先需要考虑的的第一条设计决策就是如何加密存储数据,以此来保证它的安全,免受被他人窥测。 SQL Server中有哪一种支持可以用于加密对象和数据?从一开始就讨论一下SQL Server欠缺什么是...
本文介绍了几种不同的策略如何在SQL Server中由原子建立分子查询。 每位SQL Server开发员都有自己的首选操作方法。我的方法叫做分子查询。这些是由原子查询组合起来的查询,通过它们我可以处理一个表格。将原子组合起来,可以建立分子。当然也会有限制(化学家所称的化合价),但一般来说,这个原理还是适用的。 在本文中,我将...
标签: PHP
  本地文件上传到服务器后,服务器的脚本对文件进行保存,一般有两种方式,一种是作为 文件保存到机器的特定目录下,但是这里就有很多诸如文件重名带来的种种不便之处,有的程 序自动改文件名字,把名字加上上传时间等方法以保证文件名的唯一性,这样失去了文件的原 始名字,通过文件名查询特定的文件信息也有很多困难,不利于文件的统...
标签: SQLServer
极限编程潜在的中心前提就是两种思想比一种要好。两个程序员并排坐在一起,一个编程,另一个逐块逐行地挑刺。这样做的原因很明显,如果在键盘上操作的人是司机的话,那么他旁边的人就是领航员。当中没有谁是上司——他们的地位是平等的,角色是相辅相成的。极限编程让人震惊的地方就是实际起作用的技术。 由于有回报,极限编程已经在前端开发...
对于采用 SQL Server 2005 Analysis Service技术生成多维数据集的BI项目来说,数据访问权限的控制有两个级别:一个是在多维数据集中设置,一个是在前台展现工具中设置。本文将介绍怎样在多维数据集中设置访问权限控制的方法。 对于访问控制需求(这里以SQL Server 2005自带的示例说明)有如下说明:假设Adventure Works Cycles将全球...

经验教程

21

收藏

66
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部