- PR -

DataAdapterを使ったImage型列の更新について

1
投稿者投稿内容
nsfj
会議室デビュー日: 2002/08/09
投稿数: 12
投稿日時: 2002-08-11 18:09
初めて投稿させて頂きます。よろしくお願いします。

C#を使って開発を行っているのですが、
DataAdapterを使ってSQL ServerのImage型のデータを更新しようとしたのですが
データが16Byteで切れてしまいます。
参照および追加の時は問題ありません。
また引数として渡しているDataSetにもUpdateの直前までは正しく格納されています。
何かやり方があるのでしょうか?
ご存知の方がいればお教えください。
うりゅう
大ベテラン
会議室デビュー日: 2002/06/15
投稿数: 202
お住まい・勤務地: Hiroshima
投稿日時: 2002-08-13 15:19
推測で回答します。あまり自信がないので大外しだったらすいません。

SQL ServerのImage型は、.NET FrameWorkではByte[]型です。要するにByte型(8BYTE)の配列型である必要があるのですが、更新の際に、明示的な指定ではなく暗黙的に変換されてしまっているのではないでしょうか?

そのために配列の頭2つ分しかいってないのではないでしょうか?

うわ、ほんとに推測(苦笑)
_________________
--------------------------------------
ネットビルド 小田原貴樹
odahara@netbuiuld.jp
--------------------------------------
nsfj
会議室デビュー日: 2002/08/09
投稿数: 12
投稿日時: 2002-08-23 11:15
レスが遅くなりましてすみません。
なんとか解決しました。
原因はSqlDataAdapterの構成ウィザードにより生成されたUpdateCommandのParameterのLengthがimage型列について16Byteになっていました。
SQL Serverのimage型はレコード内にはポインタのみで実データは別の格納域に持ってますが、
そのポインタ用のLengthが16Byteであり、それを格納データ長と誤認識したのではないかと思ってます。
再度構成ウィザードにより生成し直したところ改善しました。
.NET Framework SP2を適用した後でしたので、SP2での修正点かとも思いましたが、
他のSP1端末では正しく生成されており、結局何の影響であったのかは不明です。
生成されたものでもちゃんと検証しないとダメですね。
お騒がせ致しました。
1

スキルアップ/キャリアアップ(JOB@IT)