ComputerHunter.org

 

How to Save an Image in a SQL Server Database?


Most of the web applications have a lot of images used in it. These images are usually stored in a web server folder and they are accessed by giving the relative path to the file with respect to the root folder of the website. .Net being the platform for distributed application now, ASP.Net can be used to store images that are small to be stored in a database like SQL Server 2000 and later versions. For this purpose the SQL Server database provides a data type called "image" which is used to store images in the database.

To access these images stored in the database we will be using the ADO.Net classes. To find out how to insert and retrieve an image in to the SQL Server database, you can create a .aspx page which can have a HTMLInputFile control which is used to select the image file that is to be saved in the database. You can also create a textbox control in which you can add the image name or some comment or an image id for the image saved. Use a button control to upload the image to the database. Namespaces like System.Data.SqlClient, System.Drawing, System.Data, System.IO, and System.Drawing.Imaging are used in this task.

In the OnClick property of the button you can write the following code to upload an image to the database.

// create a byte[] for the image file that is uploaded
int imagelen = Upload.PostedFile.ContentLength;
byte[] picbyte = new byte[imagelen];
Upload.PostedFile.InputStream.Read (picbyte, 0, imagelen);
// Insert the image and image id into the database
SqlConnection conn = new SqlConnection (@"give the connection string
here...");
try
{
conn.Open ();
SqlCommand cmd = new SqlCommand ("insert into ImageTable "
+ "(ImageField, ImageID) values (@pic, @imageid)",
conn);cmd.Parameters.Add ("@pic", picbyte);
cmd.Parameters.Add ("@imageid", lblImageID.Text);
cmd.ExecuteNonQuery ();
}
finally
{
conn.Close ();
}

You can also write the above code in a function and call that function in the OnClick event of the upload button. The code given above performs the following steps in the process of inserting an image into the database.

1. Get the content length of the image that is to be uploaded
2. Create a byte[] to store the image
3. Read the input stream of the posted file
4. Create a connection object
5. Open the connection object
6. Create a command object
7. Add parameters to the command object
8. Execute the sql command using the ExecuteNonQuery method of the command object
9. Close the connection object

To retrieve the image from the SQL Database you can perform the following steps.

1. Create a MemoryStream object. The code can be something like, MemoryStream mstream = new MemoryStream ();

2. Create a Connection object

3. Open the connection to the database

4. Create a command object to execute the command to retrieve the image

5. Use the command object's ExecuteScalar method to retrieve the image

6. Cast the output of the ExecuteScalar method to that of byte[] byte[] image = (byte[]) command.ExecuteScalar ();

7. Write the stream mstream.Write (image, 0, image.Length);

8. Create a bitmap object to hold the stream Bitmap bitmap = new Bitmap (stream);

9. Set the content type to "image/gif" Response.ContentType = "image/gif";

10. Use the Save method of the bitmap object to output the image to the OutputStream. bitmap.Save (Response.OutputStream, ImageFormat.Gif);

11. Close the connection

12. Close the stream mstream.Close();

Using the above steps you can retrieve and display the image from the database to the web page.

You can use these algorithms and take advantage of the "image" data type available in the SQLServer 2000 database to store small images that correspond to a particular record in the table of the database. This method of storing avoids the tedious task of tracking the path of the web folder if the images are stored in a web folder.

Visit A Guide to .NET for a complete introduction to .NET framework. Learn about ASP.NET, VB.NET, C# and other related technologies.







Google News - Top Stories

WELT ONLINE

LIVE: Federer, Nadal meet for Wimbledon title
FOXSports.com - 8 hours ago
by Zack Pierce, FOXSports.com Roger Federer and Rafael Nadal meet for the Wimbledon championship for the third straight year. Will Federer make it six straight titles at the All England Club, or will Nadal finally tame his nemesis on the grass?
Rafael Nadal gets another shot at Roger Federer Los Angeles Times
Federer loses Wimbledon thriller against Nadal Swissinfo
Washington Post - Just Jared - The Associated Press - WBOC TV 16
all 4,794 news articles


BBC News

California firefighters brace for new heat wave
Reuters - 1 hour ago
By Jill Serjeant LOS ANGELES, July 6 (Reuters) - Weary California firefighters braced on Sunday for another heat wave in the next few days as they battled to bring two major blazes threatening towns along the central coast under control.
Video: Governor Visits So Cal Command Center kcratv
Weather helps crews battling Calif's biggest fire The Associated Press
Monsters and Critics.com - San Diego Union Tribune - AFP - RedOrbit
all 3,133 news articles


At least 8 dead in blast near Pakistani mosque
Reuters - 3 hours ago
By Zeeshan Haider ISLAMABAD (Reuters) - A suicide bomber killed at least eight people and wounded 23 in an attack on police who had been guarding Islamists marking the anniversary of an army commando raid on Islamabad's Red Mosque.
Suicide bombing in Pakistan kills 19 United Press International
Musharraf, Gilani order probe Daily Times
The Associated Press - Monsters and Critics.com - Bloomberg - McClatchy Washington Bureau
all 859 news articles


Telegraph.co.uk

Colombia's Uribe soars after freeing hostages
Christian Science Monitor - 2 hours ago
The president's approval rating skyrocketed to 90 percent after the military freed 15 high-profile hostages from a jungle rebel camp.
Popularity of Colombia's Uribe soars after rescue Reuters
Freed Colombian hostages urge hope The Associated Press
BBC News - Los Angeles Times - PRESS TV - Telegraph.co.uk
all 5,638 news articles


BBC News

In Japan, Bush Defends N. Korea Shift
New York Times - 11 hours ago
By SHERYL GAY STOLBERG TOYAKO, Japan - President Bush arrived on the lush and mountainous northern Japanese island of Hokkaido on Sunday for a gathering of world leaders that is to focus on climate change, soaring oil and gas prices and aid to Africa.
Video: Bush Reassures Japan on North Korean Kidnappings AssociatedPress
Bush, Fukuda say Olympics no place for politics AFP
The Associated Press - Reuters - ABC Online - BBC News
all 1,003 news articles

Google
 

Copyright © 2006 Computer Hunter - A Division of Arthur´s Job Base