初めて投稿します、ごろーと申します。
開発環境は 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);
等とやってもやはりおかしな値が格納され、うまくいきません。
どのようにすればよいのでしょうか?
初投稿なもので、質問に不備・不明点などありましたらご指摘ください。追記等致します。
よろしくご指導お願いします。
ごろーです。
すみません、自己解決してしまいました。
GetCollectでなく、GetChunk メソッドを使用し、配列に格納することにより
うまくいきました。
ただ、SqlServerのBinary型はADOのGetChunkメソッドが使用できないため、
SelectのSQL内にてBinary→image型にConvertしてから行いました。
VC++、ADO、SQLServer、どのあたりの掲示板で質問してよいかもわからず、
お騒がせしました。
また何かありましたらよろしくお願いします。
ツイート | ![]() |