2013-03-26 66 views
5

我想在我的SQL Server數據庫中存儲圖像,我應該使用哪種數據類型?我可以使用varbinary類型將圖像存儲在SQL Server數據庫中嗎?

在下面的code aspx.cs,我試圖從請求輸入流中讀取所有字節並將其存儲在數據庫中,但byte[]數組在表中未正確更新。我錯過了什麼嗎?

protected void Page_Load(object sender, EventArgs e) 
{ 
     Request.InputStream.Position = 0; 

     byte[] Contents = new byte[Request.InputStream.Length]; 

     Request.InputStream.Read(Contents, 0, (int)Request.InputStream.Length); 

     con.Open(); 

     try 
     { 
      string query = "update tblImageUpload set " + IMAGE_ID + " = @imageBytes where Image_ID='" + CID + "'"; 

      int i = 0; 

      using (cmd = new SqlCommand(query, con)) 
      { 
       cmd.Parameters.Add("@imageBytes", SqlDbType.VarBinary, Contents.Length).Value = Contents; 

       i = cmd.ExecuteNonQuery(); 
      } 

      Response.Write("Upload Query = " + query); 
      Response.Write("Upload Code = " + i); 
     } catch (Exception ex) { 
      Response.Write("Upload Code=" + ex); 
     } 
+0

'你可以用VARBINARY(最大)'對不起錯字 – MethodMan 2013-03-26 19:33:11

回答

7

您可以使用VARBINARY是的。您可能最好使用VARBINARY(MAX)來存儲它們。

您可以使用它像這樣:

cmd.Parameters.Add("@imageBytes", SqlDbType.VarBinaryMax); 
cmd.Parameters["@imageBytes"].Value = Contents; 
+0

我試圖用強制轉換爲運營商,但它力的工作,但是參數化的SQL查詢的偉大工程,是對上傳圖片的大小有任何限制,我在表格中有大約10個圖片列 – deepak 2013-03-26 20:02:14

+1

@deepak那麼,限制在最大大小'VARBINARY'可以容納的,這是2^31-1字節。除非你打算存儲2千兆像素和以上的圖像,我想你會沒事:) – mattytommo 2013-03-26 20:04:02

+0

@mattytommon謝謝 – deepak 2013-03-26 20:06:00

相關問題