- PR -

DbCommandへの型変換でエラー

投稿者投稿内容
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-05-07 14:57
引用:

ひろれいさんの書き込み (2007-05-07 13:52) より:

要は、どうして「DbCommand」と「SqlCommand」を混在しているのかってことです。
どっちかに統一すれば済む話だと思います。


これは場合によって SqlCommand が OracleCommand や OleDbCommand になったりするってことじゃないですか?
で、どれになっても DbCommand or IDbCommand で処理をしたいと。
_________________
かるあ のメモスニペット
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2007-05-07 15:23
引用:

かるあさんの書き込み (2007-05-07 14:57) より:

引用:

ひろれいさんの書き込み (2007-05-07 13:52) より:

要は、どうして「DbCommand」と「SqlCommand」を混在しているのかってことです。
どっちかに統一すれば済む話だと思います。


これは場合によって SqlCommand が OracleCommand や OleDbCommand になったりするってことじゃないですか?
で、どれになっても DbCommand or IDbCommand で処理をしたいと。


そういう使い方が出来るなんて知りませんでした。
かるあさん、フォローありがとうございます。

ちゃんと調べれば、問題無いことくらい分かるのに・・・orz
DbCommand クラス

Furi2さん、混乱させてごめんなさい。
Furi2
ベテラン
会議室デビュー日: 2004/10/28
投稿数: 74
お住まい・勤務地: N.Hollywood/Agoura Hills
投稿日時: 2007-05-07 17:07
引用:

かるあさんの書き込み (2007-05-07 14:30) より:
引用:

Furi2さんの書き込み (2007-05-07 14:24) より:
コード:
IDbCommand icmd = new SqlCommand();
DbCommand cmd = (DbCommand) icmd;




なぜキャストできないのかは僕もわかりませんが
これ DbCommand に入れる必要ってあるんですか?
インターフェイスのまま処理しちゃっていい気がする。




このメソッドからDbCommandを受け取って処理をする部分が既に多数存在するので、使用している部分全てでキャストするもしくは全てIDbCommandに変更するより、この元メソッドの中でキャストしてしまったほうがいいと思いました。0からコードを書いていくなら確かにIDbCommandのまま使ったほうがいいですよね。
Furi2
ベテラン
会議室デビュー日: 2004/10/28
投稿数: 74
お住まい・勤務地: N.Hollywood/Agoura Hills
投稿日時: 2007-05-07 17:09
引用:

かるあさんの書き込み (2007-05-07 14:57) より:

これは場合によって SqlCommand が OracleCommand や OleDbCommand になったりするってことじゃないですか?
で、どれになっても DbCommand or IDbCommand で処理をしたいと。




その通りでございます。ありがとうございました!
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-05-07 23:24
いい加減 .NET Compact Framework のドキュメントは別に書いてほしいですね。(そう思うならフィードバックしろって話ですが)

.NET Compact Framework の DbCommand は System.Data.dll に、SqlCommand は System.Data.SqlClient.dll にあります(この時点で違いがあります)。そして、.NET Compact Framework の SqlCommand は DbCommand を継承していません。なので、SqlCommand は DbCommand の参照に設定できないという現象が起きます。

これらはオブジェクトブラウザ等で検証すればわかる事なのですが、MSDN ライブラリ上では .NET Framework と .NET Compact Framework を一緒に書いているのでわかり難いですね。

_________________
囚人@わんくま同盟
[url=http://blogs.wankuma.com/shuujin/]囚人のジレンマな日々[/url]

[ メッセージ編集済み 編集者: 囚人 編集日時 2007-05-08 00:47 ]
Furi2
ベテラン
会議室デビュー日: 2004/10/28
投稿数: 74
お住まい・勤務地: N.Hollywood/Agoura Hills
投稿日時: 2007-05-08 01:41
囚人さん、

なるほどです。。それはわかりませんでした&大いに納得です。DbCommandがDbProviderFactoryクラスと関わっていて、Compact FrameworkがFactoryクラスをサポートしていないことに関連があるのでしょうか。それにしてもありがとうございました。非常にすっきりしました。

スキルアップ/キャリアアップ(JOB@IT)