5

イメージを SQL Server にアップロードするコードを作成しました。

画像をバイトに変換するコードは次のとおりです。

//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値としてパラメーターに追加するコードは次のとおりです。

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

しかし、私はエラーが発生しています

文字列型やバイナリは省略されます。ステートメントは終了されました

どうすればこの問題を克服できますか?

4

2 に答える 2

4

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

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

于 2013-03-15T13:41:35.110 に答える
0

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

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

bill_Image varbinary(X)

X を増やすか、数値の代わりに MAX を入力します (8 000 バイトを超える画像がある場合)

binary/varbinary 型に関する情報はこちら

于 2013-03-15T13:42:39.007 に答える