设为首页 收藏本站
查看: 1028|回复: 0

[经验分享] 读取sql server 数据库图片信息

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-7-1 06:37:53 | 显示全部楼层 |阅读模式
首先,学习 http://www.iyunv.com/hedonister/archive/2005/06/14/174084.html
以下来自,他的内容
摘要
  .NET是由微软开发的一种新型的分布式计算平台,ASP.NET是它针对Web开发的编程模式。本文的目的是在开发数据驱动的ASP.NET Web应用程序中获取一些好的经验。这个应用程序将告诉你怎么把一幅图片保存到数据库中以及怎样把图片从数据库中读取出来。它以ADO.NET作为数据访问机制,C#作为编程语言,SQL 2000 Server作为后台数据库。

概述
  
一般的,很大的图片文件往往被保存在Web服务器的文件夹中,而不是数据库中。在一些实例中,以银行系统为例,人们先把用户的签名做成图片文件,然后保存到数据库中。



  • 数据库模式   
  在这个示范中,微软的SQL 2000 Server被用作后台数据库。我使用了一种比较特殊的数据类型 image 。这 image 数据类型是被用来保存图片到数据库的。
    所使用的控件:   
      System.Web.UI.HtmlControls.HtmlInputFile   
    • System.Web.UI.WebControls.TextBox   
    • System.Web.UI.WebControls.Button

所使用的名字空间:   
       using System.Data.SqlClient;
       using System.Drawing;
using System.Data;
using System.IO;
using System.Drawing.Imaging;


编码
  使用 HtmlInputFile 类,它可以用 标签来声明一个实例。下面的例子是一个完整的 ASPX 文件,它让用户上传图片文件以及图片的说明。OnUpload 方法把图片以及说明写到iSense 数据库的Picture 表中



  


DSC0000.gif
1// 保存图片文件到数据库的源码

2
3public void OnUpload(Object sender, EventArgs e)
DSC0001.gif DSC0002.gif 4 DSC0003.gif {
DSC0004.gif 5// 从输入文件中创建一个 byte[]
6int len = Upload.PostedFile.ContentLength;
7    byte[] pic = new byte[len];
8    Upload.PostedFile.InputStream.Read (pic, 0, len);
9// 插入图片和说明到数据库中
10 SqlConnection connection = new
11     SqlConnection (@"server=INDIA\INDIA;database=iSense;uid=sa;pwd=india");
12    try
DSC0005.gif DSC0006.gif 13    {
14        connection.Open ();
15        SqlCommand cmd = new SqlCommand ("insert into Image "
16          + "(Picture, Comment) values (@pic, @text)", connection);
17        cmd.Parameters.Add ("@pic", pic);
18        cmd.Parameters.Add ("@text", Comment.Text);
19        cmd.ExecuteNonQuery ();
DSC0007.gif 20    }
21    finally
22    {
23        connection.Close ();
24    }
DSC0008.gif 25}
26

  上面创建的函数可以通过使用按钮的
onClick 属性来调用。
如何使用ADO.NET技术从数据库中读取图片并把它显示在Web页面上?
  这里,我使用Web页面来显示图片,而没有用其他任何控件。下面的代码是用来显示数据库中的图片。

  


1private void Page_Load(object sender, System.EventArgs e)
2{
3    MemoryStream stream = new MemoryStream ();
4    SqlConnection connection = new
5      SqlConnection (@"server=INDIA\INDIA;database=iSense;uid=sa;pwd=india");
6    try
7    {
8        connection.Open ();
9        SqlCommand command = new
10          SqlCommand ("select Picture from Image", connection);
11        byte[] image = (byte[]) command.ExecuteScalar ();   
12        stream.Write (image, 0, image.Length);
13        Bitmap bitmap = new Bitmap (stream);
14        Response.ContentType = "image/gif";
15        bitmap.Save (Response.OutputStream, ImageFormat.Gif);
16    }
17    finally
18    {
19        connection.Close ();
20        stream.Close ();
21    }
22}
23  

  GDI+函数为操作和定义图片提供了一个丰富的功能集合。本文的例子只能看到它的一小部分功能。你可以使用 System.Drawing System.Drawing.Imaging 名字空间来调用这些功能。举例来说,你可以开发在Web上保存和管理图片文件的应用程序,或者你可以一个简单、易配置的应用程序使用户能够操作图片。

  如何运行程序?   
  

  
  首先,创建一个虚拟目录,把你的工程文件放到这虚拟目录中。然后改变服务器名称,数据库名称以及表的名称,如下所示:

  


1SqlConnection connection = new SqlConnection("server=localhost;database=mypictures;uid=sa;pwd=");  
  
然后公布你的工程以获得最好的结果。

下面我我的体会:
使用背景: 在查询出来的 用户信息 ,双击用户,弹出包括相片的用户基本信息

在CombinationQueryShow.aspx  的datagrid_ItemDataBound 事件里面写如下




    if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                //为数据项添加鼠标单击属性 打开
                e.Item.Attributes.Add("ondblclick", "window.open('Person_ContentShow.aspx?PersonInfoID="+e.Item.Cells[0].Text+"' ,'个人信息详细显示','width=800,height=600,resizable=yes,top=100,left=100'"+");");
                        
            }  

Person_ContentShow.aspx 页面的HTML 内容如下:



  
  


  1
  2
  3
  4   
  5        个人详细信息显示
  6        
  7        
  8        
  9        
10        
11   
12   
13        
14            
15               
16                    
17                        
18                           
19                                
20                                    
21                                       
22                                       
23                                    
24                                       
25                                       
26                                    照片
27                                       
28                                         
31                                    
32                                
33                                
34                                    
35                                       
36                                       
37                                    
38                                       
39                                       
40                                
41                                
42                                    
43                                       
44                                       
45                                    
46                                       
47                                       
48                                
49                           
50                           
51                                
52                                    
53                                       
55                                            
57                                                
58                                                
59                                                
60                                                
61                                                
62                                            
63                                       
64                                
65                           
66                           
67                                
68                                    
69                                        中组部多记录信息集
71
73                                                
74                                                
75                                                
76                                                
77                                                
78                                            
79                                
80                           
81                           
82                                
83                                    
84                                        子女情况多记录信息集
86
88                                                
89                                                
90                                                
91                                                
92                                                
93                                            
94                                
95                           
96                           
97                                
98                                    
99                                        非固定补贴情况多记录信息集
101
103                                                
104                                                
105                                                
106                                                
107                                                
108                                            
109                                
110                           
111                           
112                                
113                                    
114                                        离休后奖惩情况多记录信息集
116
118                                                
119                                                
120                                                
121                                                
122                                                
123                                            
124                                
125                           
126                           
127                                
128                                    
129                                        住院信息
131
133                                                
134                                                
135                                                
136                                                
137                                                
138                                            
139                                
140                           
141                        
142                    
143               
144            
145        
146   
147
148  
关键部分是:




这里需要生成  ImagePage.aspx 页面
在 ImagePage.aspx 页面  编写代码如下:



using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

using System.Data.SqlClient;
using System.IO;
using System.Drawing.Imaging;


namespace Oceansoft.LGB.WEBUI.admin.search
{
    /**////
    /// ImagePage 的摘要说明。
    ///
    public class ImagePage : System.Web.UI.Page
    {
        private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此处放置用户代码以初始化页面
//            if (Page.IsPostBack)
//            {
                Laod_Image();
//            }
             //加载图象信息
            
        }
        private void Laod_Image()
        {
            string PersonInfoID=Request.QueryString["PersonInfoID"];
            string str_sqlGetImage="select A9901 from LGBPInfo where PersonInfoID='"+PersonInfoID+"'";
            //图象处理               
            readImage(str_sqlGetImage);
        }
        private void readImage(string str_sql)
        {
            //            try
            //            {
            //                CommonInterface CIF=new CommonSql(strConn);
            //                IDataReader dbRead=CIF.ExeForDtr(str_sql);
            //                if (dbRead.Read())
            //                {
            //                    Response.Clear();
            //                    byte[] imageData =(byte[])dbRead["A9901"];
            //                    Int32 imageSize = imageData.Length;
            //                    Response.ContentType=dbRead["A9901"].ToString();
            //                    Response.OutputStream.Write(imageData, 0, imageSize);
            //                    //Response.BinaryWrite(imageData);                    
            //                    CIF.Close();
            //                }
            //                else
            //                {
            //                    CIF.Close();
            //                }
            //                //// Clear Response buffer
            //                Response.End();
               
            //            }
            //            catch (Exception exe)
            //            {
            //                //throw exe;
            //            }
            MemoryStream stream=new MemoryStream();
            string strConn=(string)Session["str_Conn"];//数据库连接字串
            SqlConnection connection=new SqlConnection(strConn);
            try
            {
                connection.Open();
                SqlCommand command=new SqlCommand(str_sql,connection);
                byte[] image=(byte[])command.ExecuteScalar();
                stream.Write(image,0,image.Length);
                Bitmap bitImage=new Bitmap(stream);
                Response.ContentType="image/gif";
                bitImage.Save(Response.OutputStream,ImageFormat.Gif);
               
            }
            catch
            {
                //获得空白图片文件的路径 c:\inetpub\wwwroot\LGBWEB\admin\search
                string strblandImagePath= Server.MapPath("");
                //c:\inetpub\wwwroot\LGBWEB\admin\
                strblandImagePath=strblandImagePath.Substring(0,strblandImagePath.Length-6)+"images\\blandImage.JPG";
                /**////c:\inetpub\wwwroot\LGBWEB\admin\images\blandImage.JPG
                //strblandImagePath+="images\blandImage.JPG";                    
                FileStream FileBlandImagestream=File.OpenRead(strblandImagePath);
                Bitmap bitImage=new Bitmap(FileBlandImagestream);
                Response.ContentType="image/gif";
                bitImage.Save(Response.OutputStream,ImageFormat.Gif);
            }
            finally
            {            
                connection.Close();
                stream.Close();               
            }
        }
        
        Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            //
            InitializeComponent();
            base.OnInit(e);
        }
        
        /**////
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        ///
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion
    }
}
这里 blandImage.JPG文件是为了当 图片在数据库里面不存在的时候,显示一个空白的图片,blandImage.JPG是空白图片
运行通过

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-82063-1-1.html 上篇帖子: 70-433 Microsoft SQL Server 2008, Database Development 考试感言 下篇帖子: SQL Server 按列连接字符串的三种方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表