SqlServerのbinary型をchar配列に格納するには?

解決


ごろー  2005-08-19 13:06:30  No: 58700

初めて投稿します、ごろーと申します。
開発環境は Visual Studio C+6.0 Win2000Serverです

SQLServerよりADOにてデータをchar配列に読み込み、
ソケット通信にて送信する、という処理を行っています。
Varchar等のデータ型では下記のやり方でchar配列に読み込めていたのですが、
Binary型でセットされているものを読み込もうとすると、
変換時におかしな値になってしまい、うまく格納できません。

------------ソース-----------------------------
_RecordsetPtr   lRecordSet;
_variant_t vstrWork;
_bstr_t     strWork;
char  chrField1[50];

//<レコードセット(lRecordSet)オープン迄は省略します>
vstrWork = lRecordSet->GetCollect(_variant_t("フィールド名"));
vstrWork.ChangeType(VT_BSTR);
strWork = vstrWork.bstrVal;
strcpy(chrField1,strWork.operator char*( ));

----------------------------------------------
Barchar→String変換,strcpyなどで、文字列として扱われる際に
値が不正になっているのだとは思うのですが、
そのまま
memcpy(chrField1,&vstrWork.cVal, 50);
等とやってもやはりおかしな値が格納され、うまくいきません。
どのようにすればよいのでしょうか?

初投稿なもので、質問に不備・不明点などありましたらご指摘ください。追記等致します。
よろしくご指導お願いします。


ごろー  2005-08-20 11:53:32  No: 58701

ごろーです。
すみません、自己解決してしまいました。
GetCollectでなく、GetChunk メソッドを使用し、配列に格納することにより
うまくいきました。

ただ、SqlServerのBinary型はADOのGetChunkメソッドが使用できないため、
SelectのSQL内にてBinary→image型にConvertしてから行いました。

VC++、ADO、SQLServer、どのあたりの掲示板で質問してよいかもわからず、
お騒がせしました。

また何かありましたらよろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加