- ベストアンサー
VB6.0 ADOでbyte型配列を Insertしたい
始めて投稿させて頂きます。よろしくお願いします。 さて当方、VB6.0とADOを使ってSQL Serverに接続してデータのやりとりをするプログラムを開発しているのですが byte型配列に入っている値をADOを使って、Char型のフィールドに入れたいんです。 このような処理は可能でしょうか? いろいろと探してみたのですが、どうしてもわからずにほとほと困っております。 何か可能な方法があれば、ぜひよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ADOのヘルプを読んでみたのですが、 image型の時 バイト配列が受け渡せるような記述がありますので、 やはりDBの方をimage型にするべきだと思います。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1補足< 例えば IF &h20<= data(i) and data(i)< &h7F THEN outstr = outstr + chr(data(i)) END IF の様に値のチェックをして、制御コードなどを飛ばしてやれば良いと思いますが 本当に、バイトをDBに入れたいのなら DBの定義でCHARにするべきでなかったように思いますが。
お礼
回答ありがとうございます。 >DBの定義でCHARにするべきでなかったように思いますが。 やはりそうなんですか……。 ただDB設計は担当外なものでして、何とかこちらで対応しようとしたのですが。 そうなるとDB設計をimageにしてもらうべきでしょうか? あるいは16進数変換して、char型を二倍の値にしてもらうべきなのでしょうね。。。 ありがとうございます。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
dim data(10) as Byte dim outstr as String の時 outstr="" for i=0 to UBOUND(data) outstr = outstr + chr(data(i)) next のような感じで、文字列にしてやればいいのではないでしょうか
お礼
回答ありがとうございます。 私の質問の説明不足ですみませんが、このままですと、 data(i) の中身が特殊コードになった時(たとえば 0 など) cQiery = "INSERT INTO tablename VALUES ('" & outstr & "')" adoObj.Execute(cQiery) としても書き込めないのです。 ところで、ふと思ったのですが、もしかしてけっこう速度のいるプログラムなので、Insertより速度が遅いという事で試していなかったのですが、AddNewメソッドを使えば書き込めるのでしょうか? そちらも試してみます。
お礼
回答ありがとうございました。 実現不可ということで、設計の方で見直してもらえるように交渉してみます。