Csharp/C Sharp/Database ADO.net/Load Image

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Read image data from database and display that image

using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.IO;
 
 
public class Form1 : System.Windows.Forms.Form {
   private System.Windows.Forms.Button button1;
   private System.Windows.Forms.TextBox textBox1;
   private System.Windows.Forms.PictureBox pictureBox1;
   private Images images;
   private System.ruponentModel.Container components = null;
   public Form1() {
      InitializeComponent();
      images = new Images();
      if (images.GetRow()) {
            this.textBox1.Text = images.GetFilename();
            this.pictureBox1.Image = (Image)images.GetImage();
      } else {
            this.textBox1.Text = "DONE";
            this.pictureBox1.Image = null;
      }
   }
   private void InitializeComponent() {
      this.button1 = new System.Windows.Forms.Button();
      this.textBox1 = new System.Windows.Forms.TextBox();
      this.pictureBox1 = new System.Windows.Forms.PictureBox();
      this.SuspendLayout();
      this.button1.Location = new System.Drawing.Point(200, 8);
      this.button1.Name = "button1";
      this.button1.TabIndex = 0;
      this.button1.Text = "Next";
      this.button1.Click += new System.EventHandler(this.button1_Click);
      this.textBox1.Location = new System.Drawing.Point(24, 8);
      this.textBox1.Name = "textBox1";
      this.textBox1.Size = new System.Drawing.Size(144, 20);
      this.textBox1.TabIndex = 1;
      this.textBox1.Text = "";
      this.pictureBox1.Location = new System.Drawing.Point(8, 48);
      this.pictureBox1.Name = "pictureBox1";
      this.pictureBox1.Size = new System.Drawing.Size(280, 208);
      this.pictureBox1.TabIndex = 2;
      this.pictureBox1.TabStop = false;
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(292, 272);
      this.Controls.Add(this.pictureBox1);
      this.Controls.Add(this.textBox1);
      this.Controls.Add(this.button1);
      this.Name = "Form1";
      this.Text = "Display Images";
      this.ResumeLayout(false);
   }
   static void Main() {
      Application.Run(new Form1());
   }
   private void button1_Click(object sender, System.EventArgs e) {
      if (images.GetRow()) {
         this.textBox1.Text = images.GetFilename();
         this.pictureBox1.Image = (Image)images.GetImage();
      } else {
         this.textBox1.Text = "DONE";
         this.pictureBox1.Image = null;
      }
   }
}

public class Images{
   string imageFilename = null;
   byte[] imageBytes = null;
   SqlConnection imageConnection = null;
   SqlCommand imageCommand = null;
   SqlDataReader imageReader = null;
   public Images() {
      imageConnection = new SqlConnection("server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI");
      imageCommand = new SqlCommand(@"select imagefile, imagedata from imagetable", imageConnection);
      imageConnection.Open();
      imageReader = imageCommand.ExecuteReader();
   }
   public Bitmap GetImage() {
      MemoryStream ms = new MemoryStream(imageBytes);
      Bitmap bmap = new Bitmap(ms);
      return bmap;
   }
   public string GetFilename() {
      return imageFilename;
   }
   public bool GetRow() {
      if (imageReader.Read()) {
        imageFilename = (string) imageReader.GetValue(0);
        imageBytes = (byte[]) imageReader.GetValue(1);
        return true;
      }else {
        return false;
      }
   }
   public void EndImages() {
      imageReader.Close();
      imageConnection.Close();
   }
}