2013-03-15 20 views
5

イメージをSQL Serverにアップロードするコードを作成しました。ここでイメージをSQL Serverに保存しようとしたときにエラーが発生しました

はバイトに画像を変換するためのコードです:

objCmd.Parameters.Add("@bill_Image", SqlDbType.Binary).Value = imageData; 
    objCmd.ExecuteNonQuery(); 

しかし、私はエラーを取得しています:

//Use FileInfo object to get file size. 
FileInfo fInfo = new FileInfo(p);   

//Open FileStream to read file 
FileStream fStream = new FileStream(p, FileMode.Open, FileAccess.Read); 
byte[] numBytes = new byte[fStream.Length]; 
fStream.Read(numBytes, 0, Convert.ToInt32(fStream.Length)); 

//Use BinaryReader to read file stream into byte array. 

//BinaryReader br = new BinaryReader(fStream); 

//When you use BinaryReader, you need to supply number of bytes to read from file. 
//In this case we want to read entire file. So supplying total number of bytes. 

// data = br.ReadBytes((int)numBytes); 
return numBytes; 

そしてここでは、値としてSqlCommandパラメータにバイトを追加するためのコードです

文字列またはバイナリデータは切り捨てられます。この声明は終了しました

どうすればこの問題を解決できますか?

+7

SQL Serverの列サイズはどのくらいですか?エラーは基本的に、あなたが列に許可されているよりも多くのバイトを格納しようとしていることを伝えています。 – Icarus

+0

カラムの長さが 'max'の場合は、すでにテーブルにトリガがあるかどうかを確認してください。 –

+0

私は最大に列を変更して、私はテーブルのトリガーを使用していません – jeevacl

答えて

4

エラーは、フィールド定義で許可されているバイト数よりも多くのバイトを保存しようとしていることを示しています。

bill_ImageにはどのようなSQLタイプを使用しているのかわかりませんが、画像を保存するためのフィールド定義はvarbinary(MAX)になります。

+0

こんにちは、objCmd.Parameters.Add( "@ bill_Image"、SqlDbType.VarBinary、-1).Value = imageData;それでも同じエラーが発生します。 – jeevacl

+0

また、objCmd.Parameters.Add( "@ bill_Image"、SqlDbType.VarBinary)で作業しました.Value = imageData;でも同じエラーが発生しました – jeevacl

+0

@jeevacl: 'bill_Image'のSQLフィールド定義を投稿できますか? –

0

データベースのbill_Image列の定義を確認してください。

それだけでXを増やすか、MAXの代わりに、数に(あなたが8つの以上の000バイトのイメージを持っている場合)がvarbinary型/バイナリ型here

について

情報を入れ

bill_Image varbinary(X) 

のようなものでなければなりません

+0

はあなたの提案としてすべてを変更しましたが、同じエラーをまだ受けています... \ – jeevacl

+0

@jeevaclそのリクエストで設定された他のフィールドはありますか?このエラーは、単にフィールドの長さが挿入しようとしているデータの長さよりも小さいことを示しています。また、画像のサイズは? –

+0

イメージサイズは858kbです。それは窓のサンプル画像です – jeevacl

関連する問題