2013-03-26 16 views
5

SQL Server veritabanımda bir görüntüyü depolamaya çalışıyorum, hangi veri tipini kullanmalıyım?SQL Server veritabanında görüntü depolamak için varbinary kullanabilir miyim?

Aşağıdaki code aspx.cs'da, istek giriş dizesinden tüm baytları okumaya çalışıyorum ve veritabanında saklamıyorum, ancak byte[] dizisi tabloda doğru şekilde güncelleştirilmiyor. Bir şey mi eksik?

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

'Eğer VarBinary (En)' üzgün yazım hatası – MethodMan

cevap

7

VARBINARY evet'i kullanabilirsiniz. Bunları saklamak için muhtemelen VARBINARY(MAX) ile gitmekten iyidir.

Böyle kullanabilirsiniz:

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

i operatörü ama kuvvetiyle işin OLARAK CAST kullanmaya çalışıyordu kullanabilirsiniz ancak parametreli sql sorgusu inşaat büyük olduğunu Yüklenecek resmin boyutuyla ilgili herhangi bir kısıtlama var, bir tablodaki yaklaşık 10 resim sütuna sahibim. – deepak

+1

@deepak Eh, "VARBINARY" değerinin 2^31-1 bayt tutabileceği maksimum boyutla sınırlandırılacak. 2 gigapiksel ve üzeri görüntüler saklamayı düşünmediğiniz sürece, iyi olacağınızı düşünüyorum :) – mattytommo

+0

@mattytommon Teşekkürler – deepak

İlgili konular