- - PR -
C#.NETでDataSet()を使用してByte配列の受け渡しかた
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-05-22 01:46
現在C#.NETを使用して開発を行なっています。
ExcelのファイルをBinaryデータとしてDBに登録するのですが その際に、別のクラスへ値を受け渡すのですが開発の規約により DataSetを使用して受け渡さなければなりません。 ソースは以下のようになっています。 a.class ---------------------------------------------------------------------- byte[] data; Stream st = InputFile.PostedFile.InputStream; data = new byte[InputFile.PostedFile.ContentLength]; st.Read(data,0,InputFile.PostedFile.ContentLength); DataSet ds = new DataSet(); ds.Tables.Add("A"); ds.Tables["A"].Columns.Add("KeyData"); ds.Tables["A"].Columns.Add("BinaryData"); object[] objArray = new object[2]; oArray[0] = "keydata"; oArray[1] = data; ds.Tables["A"].Rows.Add(objArray); ---------------------------------------------------------------------- b.class ---------------------------------------------------------------------- string strkey = (string)ds.Tables["A"].Rows[0]["KeyData"]; byte[] BinData = (byte[])ds.Tables["A"].Rows[0]["BinaryData"]; ---------------------------------------------------------------------- このような感じで渡したいのですがこれでは 「指定されたキャストは有効ではありません。」 となってしまいエラーになってしまいます。 一応、私のほうでも調べてみたのですが分かりませんでした。 どなたか教えて頂けないでしょうか? よろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-05-22 02:04
NAL-6295です。
うまくいかない原因は配列の内容が入っているのではなく、その配列をToStringした結果が格納されているから。 byte型の配列なので、"System.Byte[]"という文字列が格納されているからです。 ds.Tables["A"].Columns.Add("BinaryData"); で型指定をしないで追加された項目があるとして、 一度、
こんなコードを書けばきっと、"string"と出力される事でしょう。 で、格納されている値は"System.Byte[]"という文字列です。 ついでに直接的な解決策だけを言えば、
で、バイト配列が格納されますよ。 [ メッセージ編集済み 編集者: NAL-6295 編集日時 2005-05-22 02:06 ] | ||||||||||||
|
投稿日時: 2005-05-22 03:14
>>NAL-6295さん
早速の返答ありがとうございます。
そうですか、ToStringした結果が格納されていたんですね。 Object型が格納されていると思っていました。
DataSetのテーブルに列を追加する時に型を指定できるんですね。 私の調査不足でした。 今回の開発で初めてC#.NETを使用して開発したので知識が足りませんでした。 今は自宅にいるので確認できませんので会社に行った時に確認してみます。 その時にまた結果を報告させてもらいます。 | ||||||||||||
|
投稿日時: 2005-05-22 05:54
諸農です。
開発規約でDataSetを使用することが決められているなら、 型付きのDataSetの使用を提案・検討されてみてはいかがでしょうか。 インタフェース間違いのリスクが軽減できそうです。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2005-05-22 21:19
>>Jubeiさん
ご意見ありがとうございます。
そうですね、リスクが軽減出来るなら開発規約へ組み込んでもらえると思います。 明日、提案をしてみます。 | ||||||||||||
|
投稿日時: 2005-05-23 12:13
のりです。
>>NAL-6295、Jubeiさん ご意見ありがとうございました。 本日、確認したところ正常に値を受け渡しDBへ登録することが出来ました。 本当にありがとうございました。 |
1