Load image to database : Image Load Save « ADO.Net « C# / CSharp Tutorial






/*
Quote from


Beginning C# 2005 Databases From Novice to Professional

# Paperback: 528 pages
# Publisher: Apress (December 18, 2006)
# Language: English
# ISBN-10: 159059777X
# ISBN-13: 978-1590597774
*/


using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace LoadImages
{
   class LoadImages
   {
      string imageFileLocation =@"Images\";

      string imageFilePrefix = "milk";
      int numberImageFiles = 8;
      string imageFileType = ".gif";
      int maxImageSize = 10000;
      SqlConnection conn = null;
      SqlCommand cmd = null;

      static void Main()
      {
         LoadImages loader = new LoadImages();

         try
         {
            // Open connection
            loader.OpenConnection();
            // Create command
            loader.CreateCommand();
            // Create table
            loader.CreateImageTable();
            // Prepare insert
            loader.PrepareInsertImages();
            // Insert images
            int i;
            for (i = 1; i <= loader.numberImageFiles; i++)   
            {
               loader.ExecuteInsertImages(i);
            }
         }
         catch (SqlException ex)
         {
            Console.WriteLine(ex.ToString());
         }
         finally
         {
            loader.CloseConnection();
         }
      }

      void OpenConnection()
      {
         // Create connection
         conn = new SqlConnection(@"server = .\sqlexpress;integrated security = true;database = tempdb");
         // Open connection
         conn.Open();
      }

      void CloseConnection()
      {
         conn.Close();
         Console.WriteLine("Connection Closed."); 
      }

      void CreateCommand()
      {
         cmd = new SqlCommand();
         cmd.Connection = conn;
      }

      void ExecuteCommand(string cmdText)
      {
         int cmdResult;
         cmd.CommandText = cmdText;
         Console.WriteLine("Executing command:");
         Console.WriteLine(cmd.CommandText);
         cmdResult = cmd.ExecuteNonQuery();
         Console.WriteLine("ExecuteNonQuery returns {0}.", cmdResult); 
      }

      void CreateImageTable()
      {
         ExecuteCommand(@"create table imagetable(
               imagefile nvarchar(20),
               imagedata varbinary(max))");
      }

      void PrepareInsertImages()
      {
         cmd.CommandText = @"insert into imagetable values (@imagefile, @imagedata)";
         cmd.Parameters.Add("@imagefile", SqlDbType.NVarChar, 20);
         cmd.Parameters.Add("@imagedata", SqlDbType.Image, 1000000);

         cmd.Prepare();
      }

      void ExecuteInsertImages(int imageFileNumber)
      {
         string imageFileName = null;
         byte[] imageImageData = null;

         imageFileName =imageFilePrefix + imageFileNumber.ToString() + imageFileType; 
         imageImageData =LoadImageFile(imageFileName, imageFileLocation, maxImageSize);

         cmd.Parameters["@imagefile"].Value = imageFileName;
         cmd.Parameters["@imagedata"].Value = imageImageData;

         ExecuteCommand(cmd.CommandText);
      }

      byte[] LoadImageFile(string fileName,string fileLocation,int maxImageSize)
      {
         byte[] imagebytes = null; 
         string fullpath = fileLocation + fileName;
         Console.WriteLine("Loading File:");
         Console.WriteLine(fullpath);
         FileStream fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read);
         BinaryReader br = new BinaryReader(fs);
         imagebytes = br.ReadBytes(maxImageSize);

         Console.WriteLine("Imagebytes has length {0} bytes.",imagebytes.GetLength(0));

         return imagebytes;
      }
   }
}








32.56.Image Load Save
32.56.1.Load image to database
32.56.2.Read Bitmap from database
32.56.3.Display image
32.56.4.Writes binary data to a file
32.56.5.LoadImages.cs