2

Windows Mobile 6.5 デバイス用にプログラミングしています。

SQL Server Compact Edition を使用しており、バイト ストリームをデータベースに書き込もうとしています。列のタイプはimage(8000バイト以上を処理できると理解しています)ですが、例外が発生しています:

InvalidOperationException
@signature : 長さ 8000 へのバイト配列の切り捨て。

なぜこれが起こっているのですか?

string sql = @"INSERT INTO E_CONS_SIGNATURE (CONS_NO, SIGNATURE, SIGNATURE_FORMAT, SIGNATURE_DATE)"
            + " VALUES(@consNo, @signature, @format, @date)";

SqlCeCommand cmd = new SqlCeCommand(sql, conn);
cmd.Parameters.AddWithValue("@consNo", txtConsignment.Text);
cmd.Parameters.AddWithValue("@signature", ms.ToArray());
cmd.Parameters.AddWithValue("@format", "BMP");
cmd.Parameters.AddWithValue("@date", new DateTime());

bool success = cmd.ExecuteNonQuery() > 0;

現時点では、ファイル システムへの保存はオプションではありません。

4

1 に答える 1

0

エラー自体には、この行に問題があります

cmd.Parameters.AddWithValue("@signature", ms.ToArray());

画像を MemoryStream オブジェクトに変換する必要があります。

以下のサイトが参考になります。

イメージを SQL CE に保存する

イメージを SQL Server CE データベースに保存する

よろしく

于 2012-07-23T04:45:34.527 に答える