タイトル | : Re^4: バイト配列の表示 |
記事No | : 10048 |
投稿日 | : 2010/04/03(Sat) 23:30 |
投稿者 | : ふつうのこ |
完成しました!(^^) 今まで付き合ってくださりほんっとに感謝します。
実はSQLエラーが出た時、諦めてパスの格納にしようと思ってたんです。 ヘルプの事で偉そうな事を言ったから心象悪くしちゃってもうレスが 付かないと思ってましたから。 でもレスしてくださって、とことんやってみようと決心しました。
完成するまで付き合ってくださいねってお願いしようとしたんですが、 その前に報告する事を再確認しなきゃならないなって思い再びPCに 向かったところ、また熱中しちゃって。 で、完成しちゃった訳です。
今まで付き合ってくださりありがとうございました。
こんなに付き合ってくださったのですから、ちゃんと報告する義務がありますよね。 恥をさらすようですが、言います。 長くなるかもしれませんが…。
まずDBへのバイナリデータの登録にデータセットを使うサンプルはWebに あったんですが、データセットの使い方はあまり分かってなくて、 SQLを発行して登録、取得するやり方で行こうと思いました。 そのためにはバイナリデータをテキストとして取得しなければならないので、 その質問がこのスレッドの始まりです。 だからTextBoxに表示するっていうのは只の演習でテストだったのです。
バイナリをテキストに変換出来て、次はSQLServerへの登録です。 Insert Into …Values(…,…,"FF-D8-FF-E0-…") ってやると、"String型をByte型に変換できません"って怒られたので、 それじゃあってことで、Convert(varbinary, "FF-D8-…")としました。 すると"FFはなんたらかんたら"って怒られたので、16進表記はダメなんだ? って思って、試しに別のvarbinary型のDBを作ってテストしてみると Insert Into TestTable Values(1, Convert(varbinary, "255")) のSQL文はちゃんと通ります。 Insert Into TestTable Values(1, Convert(varbinary, "255-216-255")) のSQL文もちゃんと通ります。 そっか、16進を10進に直さなきゃならないのかと思って質問したのが 前の前の質問です。
その時は真夜中でしたのでレスしてもらう間も惜しく、自分で10進に変換して 本番ソフトで試してみました。 すると、"スタックが制限に達しました"のエラーが…。 もう目の前真っ暗で、もう諦めよう…パスを入れよう…。 いや、データセットの方法はあるけどあまり分かってないしなぁ…などと 思いつつ、床に入ったのでした。 その時の報告が、前の投稿です。
もう諦めよう、パスを入れようと思ってここを覗いてみると、仮面弁士さんから レスが付いてるじゃありませんか。 もう諦めようと思っていた心がだんだんとしぼんでいき、とことんやってやるぅ! って思いに変わっていったのです。
で、報告の確認の為に再びPCに向かうと、あれこれやっている内に またのめり込んでいったんです。
いろいろやってましたがダメで、SQLServerのヘルプでConvertをよく確認してみると、 "16進の前には0xが必要です"ってしてあります。 そうだ、忘れてた、C言語系のにも必要だし付けないと。 それからテストで作ったDBでいろいろ試しているうちに、0xFFD8FFE0…って表記で いい事が分かったんです。 それが分かれば後は一直線でした。 途中でConvertがあるとダメな事でつまづきましたが、完成したって訳です。
ヘルプにバイナリデータの登録法がサンプルでちょこっとでも書いてあれば こんなに苦労する事も無かったでしょうに。(^^;) ヘルプが不親切って思うのはこういうところなんです。
とにかくありがとうございました。 長々と書いてしまいましたが、これにて失礼します。
|