2015-06-11 51 views
1

我有一個SQL Server數據庫。我在那裏存儲了一個varbinary(max)的圖像。我插入圖像方式如下:從SQL Server VarBinary中讀取圖像(最大)

string consString = ConfigurationManager.ConnectionStrings["connection"].ConnectionString; 
      SqlConnection con = new SqlConnection(consString); 
      con.Open(); 

      String filePath = fuImage.PostedFile.FileName; 
      String naam = Path.GetFileName(filePath); 
      String extension = Path.GetExtension(naam); 

      Stream stream = fuImage.PostedFile.InputStream; 
      BinaryReader br = new BinaryReader(stream); 
      Byte[] imgByte = br.ReadBytes((Int32)stream.Length); 


      SqlCommand cmd = new SqlCommand(); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.CommandText = "spAddImage"; 
      cmd.Parameters.AddWithValue("@FOTO", imgByte); 
      cmd.Parameters.AddWithValue("@ARTIEST", ddlArtiest.SelectedValue); 
      cmd.Connection = con; 
      cmd.ExecuteNonQuery(); 
      con.Close(); 

圖像現在看起來是這樣的數據庫: 它存儲爲VARBINARY。

http://puu.sh/ikF83/6a03b52520.png < ---數據庫

現在我想,我已經插入我的asp.net頁面上顯示我的形象。

但我不知道如何才能做到這一點。

回答

0

你可以使用SqlDataReader走了過來,結果並取回你所需要的

var reader = cmd.ExecuteReader(); 
while (reader.Read()) 
{ 
    byte[] myImage = (byte[])reader["MyImageColumn"]; 
} 

這是從我的頭頂,從而使您的調整要求。但它應該給你基本的想法。

此外,強烈建議使用using塊,因爲它可以確保對象正確放置。

所以,你可以更改您的代碼

using(var connection = new SqlConnection(connectionString)) 
{ 
    //Your command 
    connection.Open(); 

    //Datareader here 

}//Object disposed here 

參考SqlDataReader

參考using block

+0

謝謝!我應該獨處這個:)!但是我在哪裏顯示我的圖像呢?在一個控制或? – Mand

+0

按照您的要求顯示它..例如,您可以使用''或''並且在網格中可以使用''這個選項幾乎是你的選擇。 – Izzy

+0

現在正在努力。我會及時向大家發佈 :)!在此先感謝 – Mand

0

通過擴展提供的Izzy的答案,下面是我們如何實施了相同的。

public HttpResponseMessage RenderImage(RenderRequest renderRequest, HttpRequestMessage request) 
{ 
    var httpResponse = new HttpResponseMessage(); 

    try 
    { 
     var reader = cmd.ExecuteReader(); 
     while (reader.Read()) 
     { 
      byte[] imagebytes = (byte[])reader["MyImageColumn"]; 
     } 

     return httpResponse = request.CreateResponse<byte[]>(HttpStatusCode.OK, imagebytes, new ImageMediaFormatter("image/png")); 
    } 
    catch() 
    { 
     throw; 
    } 
} 
相關問題