2013-03-26 18 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型(MAX)を使用することができます'ごめんタイプミス – MethodMan

答えて

7

VARBINARYを使用できます。あなたはおそらく彼らを保存するためにVARBINARY(MAX)と一緒に行くことをお勧めします。

あなたはこのようにそれを使用することができます

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

私はオペレーターとしてキャストを使用しようとしていたが、それは仕事をDINTが、パラメータ化されたSQLクエリは素晴らしい作品であり、そこには、アップロードする画像のサイズに制限があります。私はテーブル内に約10画像の列を持っています。 – deepak

+1

@deepakそれは最大サイズ 'VARBINARY'が2^31-1バイトです。あなたは2ギガピクセル以上の画像を保存する計画がない限り、私はあなたがうまくいくと思います:) – mattytommo

+0

@mattytommonありがとう – deepak

関連する問題