显示数据库中存储的图像

显示数据库中存储的图像
1、给解决方案添加一个新的Windows Forms应用程序项目DisplayDBImages。把Form1.cs更名为DisplayDBImages.cs
2、给窗体添加一个TextBox、一个Button和一个PictureBox
3、给项目添加一个新类Images。代码如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;

namespace DisplayDBImages
{
    class Images
    {
        string strFileName = null;
        byte[] imageBytes = null;
        SqlConnection conn = null ;
        SqlCommand cmd = null;
        SqlDataReader reader = null ;

        public Images()
        {
            string strConn = @"server=.\MSSQL2012;integrated security=true;initial catalog=tempdb;";
            conn =  new SqlConnection (strConn);
            cmd = new SqlCommand( @"select imagefile, imagedata from imagetable", conn);
            conn.Open();
            reader = cmd.ExecuteReader();           
        }

        public Bitmap GetImage()
        {
            MemoryStream ms = new MemoryStream (imageBytes);
            Bitmap bmp = new Bitmap(ms);
            return bmp;
        }

        public string GetFileName()
        {
            return strFileName;
        }

        // 读取一行记录
        public bool GetRow()
        {
            if (reader.Read())
            {
                strFileName = ( string)reader.GetValue(0);
                imageBytes = ( byte[])reader.GetValue(1);
                return true;
            }
            else
            {
                return false;
            }
        }

        public void EndImages()
        {
            reader.Close();
            conn.Close();
        }
    }
}

4、把Images类型的实例变量添加到 DisplayDBImages.Designer.cs中
    private System.Windows.Forms. TextBox textBox1;
    private System.Windows.Forms. Button button1;
    private System.Windows.Forms. PictureBox pictureBox1;
    private Images images;

5、记得释放images实例对象。DisplayDBImages.Designer.cs中的DisplayDBImages的Dispose方法中,插入以下代码:
protected override void Dispose(bool disposing)
{
    images.EndImages();
    if (disposing && (components != null))
    {               
        components.Dispose();
    }
    base.Dispose(disposing);
}

6、最后,DisplayDBImages.cs的代码如下:
// DisplayDBImages.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DisplayDBImages
{
    public partial class DisplayDBImages : Form
    {
        // 显示图片
        private void ShowImages()
        {
            if (images.GetRow())
            {
                this.textBox1.Text = images.GetFileName();
                this.pictureBox1.Image = ( Image)images.GetImage();
            }
            else
            {
                this.textBox1.Text = "完成" ;
                this.pictureBox1.Image = null;
            }
        }

        public DisplayDBImages()
        {
            InitializeComponent();
            images = new Images();
            ShowImages();
        }
       
        private void button1_Click( object sender, EventArgs e)
        {
            ShowImages();
        }       
    }
}


来自为知笔记(Wiz)


posted on 2013-08-25 23:53  伊利丹  阅读(290)  评论(0编辑  收藏  举报