Friday, April 16, 2010

How to store image file in Sql server database?

//use this code to store image file in sql server database

//get directory Path(C:\\Temp) where image has stored and 
use these two method in ur program

        private void GetImagePath(string strDirectoryPath)
        {
            DirectoryInfo mobjDirInfo = new DirectoryInfo
(strDirectoryPath);
            //object[] mobjStore = new object
[Directory.GetFiles(strDirectoryPath, "*.JPG").Length];
            int counter =1;
            foreach (FileInfo fl in mobjDirInfo.GetFiles
("*.JPG"))
            {
                // Create a new stream to load this photo 
into
                FileStream stream = new FileStream
(fl.FullName.ToString(), FileMode.Open, FileAccess.Read);

                // Create a buffer to hold the stream bytes
                byte[] buffer = new byte[stream.Length];

                // Read the bytes from this stream
                stream.Read(buffer, 0, (int)stream.Length);

                // Now we can close the stream
                stream.Close();

                // Extract out the name of the file an use 
it for the name of the photo
                string strName = 
Path.GetFileNameWithoutExtension(fl.Name.ToString());

                // Insert the image into the database and 
add it to the tree
                InsertImageIntoDatabase(ref buffer, 
strName, counter);
                buffer = null;
                counter = counter+1;
            }
        }


//Insert Images into sql server (create table TBLIMAGE
(PHOTOID int,PHOTONAME varchar(20),PHOTO IMAGE))
        private void InsertImageIntoDatabase(ref byte[] 
buffer, string strPhotoName, int intPhotoid)
        {
            if (mobjConn.State == ConnectionState.Closed)
            {
                mobjConn.Open();
            }
            
            mobjCmd = new SqlCommand("Insert Into TBLIMAGE 
values(@PHOTOID,@PHOTONAME,@PHOTO)", mobjConn);
            mobjCmd.Parameters.Add("@PHOTOID", intPhotoid);
            mobjCmd.Parameters.Add
("@PHOTONAME",strPhotoName);
            mobjCmd.Parameters.Add("@PHOTO", buffer);
            mobjCmd.ExecuteNonQuery();

        }

//if u have any query please revert back