|
■No41792 (επιστημη) に返信 >えーと...んじゃ dr[0] を byte[] にキャストしたらどうなります? よねKEN さんの方法がキャストしていますのでそちらで試してみます。
■No41830 (よねKEN さん) に返信 >>サーバーWindows2000+Oracle10g(RAW)SIJSテキスト16バイト 7バイト英数字、7バイト英数字、2バイト数字という構成になっています。 > > この部分の説明の意味を私はよく理解できていないのですが、 説明悪くてすみません。 oracle10g で OracleDbType が RAW というタイプでテーブルはトータル16バイト 16バイトの構成が 7バイト英数字、7バイト英数字、2バイト数字 という構成になっています。 ということでした。
> これがそのbyte配列の中身の構成だとしたら、以下のような感じで切り出せるのでは? > > byte[] byteArray = (byte[])dr[0]; > Encoding SJIS = Encoding.GetEncoding("Shift_JIS"); > string _SJISテキスト16バイト = SJIS.GetString(byteArray, 0, 16); > string _7バイト英数字1 = SJIS.GetString(byteArray, 16, 7); > string _7バイト英数字2 = SJIS.GetString(byteArray, 23, 7); > string _2バイト数字 = SJIS.GetString(byteArray, 30, 2); // 数値じゃなくて数字なんですよね? はい数字です。 > > #かなり想像をまじえて答えているので、あっているかどうかはあまり自信なし アドバイス参考に OracleDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { byte[] byteArray = (byte[])dr[0]; Encoding SJIS = Encoding.GetEncoding("Shift_JIS"); label1.Text = SJIS.GetString(byteArray, 0, 7); label2.Text = SJIS.GetString(byteArray, 7, 7); label3.Text = SJIS.GetString(byteArray, 14, 2); MessageBox.Show("次"); } というコードにして実行してみました。ラベル1には正常データが出ましたが、ラベル2が表示される前に、 インデックスおよびカウントはバッファ内の場所を参照しなければなりません。 パラメータ名:bytes というエラーが出ました。???これはなんだろう?おわかりになるでしょうか?
|