The table:
Create Table Picture
(
ID int identity(1000, 1) PRIMARY KEY,
Picture image
)
Code behind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
namespace daniweb.web
{
public partial class PagePost : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Getting the main page
if (Request.QueryString["image"] == null)
{
Image1.ImageUrl = "PagePost.aspx?image=blah.bmp";
//Make sure it exists before we link to it
//This is inefficient because it calls the database twice for one image
byte[] picture = GetImage();
if (picture == null)
{
Image1.Visible = false;
}
}
else
{
string imageStr = Convert.ToString(Request.QueryString["image"]);
if (string.Compare(imageStr, "blah.bmp", true) == 0)
{
byte[] picture = GetImage();
Response.ContentType = "image/bmp";
Response.BinaryWrite(picture);
}
}
}
private static byte[] GetImage()
{
byte[] result = null;
const string query = @"Select Top 1 Picture From Picture";
using (SqlConnection conn = new SqlConnection(BuildSqlNativeConnStr("apex2006sql", "Bugs")))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(query, conn))
{
using (SqlDataReader dr = cmd.ExecuteReader())
{
using (DataTable dt = new DataTable())
{
dt.Load(dr);
if (dt.Rows.Count > 0)
{
DataRow row = dt.Rows[0];
if (row["Picture"] != DBNull.Value)
{
try
{
result = (byte[])row["Picture"];
}
catch { }
}
}
}
}
}
}
return result;
}
private static string BuildSqlNativeConnStr(string server, string database)
{
return string.Format("Data Source={0};Initial Catalog={1};Integrated Security=True;", server, database);
}
protected void Button1_Click(object sender, EventArgs e)
{
byte[] bytes = File.ReadAllBytes(@"C:\picture.bmp");
const string query = @"Insert Into Picture (Picture) Values (@Picture)";
using (SqlConnection conn = new SqlConnection(BuildSqlNativeConnStr("apex2006sql", "Bugs")))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(query, conn))
{
SqlParameter parm = new SqlParameter("@Picture", SqlDbType.Image);
parm.Value = bytes;
cmd.Parameters.Add(parm);
cmd.ExecuteNonQuery();
}
}
}
}
}
The page:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PagePost.aspx.cs" Inherits="daniweb.web.PagePost" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Image ID="Image1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</form>
</body>
</html>