4

Here is my class (product.cs) where is the method to insert the image:

public static void InsertProductIMG(byte[] image, string contentType) 
{
   string cs = "Data Source=(local);Initial Catalog=myApp;Integrated Security=True";
   string comandoSql = "INSERT INTO [myApp].[dbo].[product] (image, ContentType) VALUES (@image, @contentType)";

   using (SqlConnection conn = new SqlConnection(cs))
   {
       conn.Open();

       using (SqlTransaction trans = conn.BeginTransaction())
       {
           SqlCommand cmd = new SqlCommand(comandoSql, conn, trans);
           SqlParameter[] parms = new SqlParameter[2];
           parms[0] = new SqlParameter("@image", image);
           parms[1] = new SqlParameter("@contentType", contentType);
           foreach (SqlParameter p in parms)
           {
              cmd.Parameters.Add(p);
           }

           cmd.ExecuteNonQuery();
           trans.Commit();
       }
    }
}

Here is the code behind of the apsx page where I call the method above:

byte[] imageBytes = new byte[fupld.PostedFile.InputStream.Length];
product.InsertProductIMG(imageBytes, "image/jpeg");//product is the class where the method is

Now I'd like to know how can I display this image?

Would I have to read the byte[] from sql (SELECT), convert to string and so convert to byte[]? And after do that convert to bitmap (System.Drawing). But how I show this bitmap in a aspx page?

I've no idea how to do it. Please help!! :]

Thanks

Obs.: In SQL Server, the column image is of type varbinary(MAX).

1
  • I am curious why do you throw(ex)? instead of just throw;.. why do you have try/catch at all for that matter? if you don't commit the tran will rollback automatically and the unhandled exception would bubble up Commented Jul 1, 2012 at 20:42

2 Answers 2

5

Create a web page that returns the image. You would select the bytes from the database (as you have already code written to insert, I think you know how to select). Once you have the bytes, you need to set the mime type and write the bytes to the response stream.

var bytesFromDatabase = getImageFromDatabase();
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(bytesFromDatabase);

Edit:

Just use a img tag with the cource tet to the aforementioned aspx web page. Eg:

<img src="http://www.example.com/image.aspx?id=1" alt="image" />
Sign up to request clarification or add additional context in comments.

1 Comment

but i need to show in a specific place. In this way can i put anywhere i want?
4

You need to use a handler to do this

Read this, a very nice example

http://www.dotnetcurry.com/ShowArticle.aspx?ID=129

1 Comment

7 years on ... and this is still really useful... thank you!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.