- - PR -
DataReaderでフィールドの見分け方
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-20 16:49
@テーブルが2つ存在します。
テーブル: A テーブル: B フィールド: id, nameA フィールド: id, nameB AC#で次のように書きました。 SqlConnection con = new SqlConnection(); SqlCommand cmd; SqlDataReader dr; string ID; con.Open(); cmd.CommandText = "select A.*, B.* from A " + "left outer join B on A.id = B.id"; dr = cmd.ExecuteReader(); if(dr.Read() == true){ ID = dr["B.id"].toString(); /* これだとエラー */ } dr.Close(); con.Close(); Bデータが存在する場合に変数IDにBテーブルのidを入れたいのですが 工夫次第でできるのでしょうか? 例ではフィールド数が少ないですが、多い場合select文に一つずつ記述するのが 大変なので・・・。 AとBのフィールド名が被って無ければ解決する問題なんですけど。 分かる方がいらしたら伝授していただけ無いでしょうか? | ||||
|
投稿日時: 2005-06-20 17:07
SQL文を以下のように変更してみてはどうでしょうか。
select A.id as idA,A.nameA as nameA, B.id as idB ,B.nameB as nameB from A left outer join B on A.id = B.id 上記のようにすれば ID = dr["idB"].toString(); これで出来ると思います。 | ||||
|
投稿日時: 2005-06-20 17:13
そういった、目先のめんどくささを解消するよりも、長い目で見ためんどくささを解消するようにした方が良いですよ。 _________________ 「伝える」とは「人に云う」と書く。 http://d.hatena.ne.jp/NAL-6295/ | ||||
|
投稿日時: 2005-06-20 17:38
わくさん、こんな面倒くさがり屋にレスを下さってありがとうございます。
名前で強調してとりたいなら as ですし、".*"でも順番が分かれば番号を書けば いいですしね。 NAL-6295さんの言葉身に染みました。 でも今まで疑問に思ってたことなのですっきりしました。 ・・・これからはプログラムで苦労しよう^^ | ||||
|
投稿日時: 2005-06-20 17:47
>名前で強調してとりたいなら as ですし、".*"でも順番が分かれば番号を書けば
いいですしね。 番号では、とらない方がいいと思いますよ。 番号でとっていたら後で修正する人が困ります。 なるべく名前でとった方がいいと思います。 | ||||
|
投稿日時: 2005-06-20 17:52
確かに名前で書いた方が確認がしやすいですよね。
一つ聞きたいのですが、 名前より番号の方が処理が早いと聞いています。 処理スピードよりも後々の修正の方を優先した方がいいでしょうか? | ||||
|
投稿日時: 2005-06-20 18:26
>処理スピードよりも後々の修正の方を優先した方がいいでしょうか?
その場その場で違うと思いますが 自分は、後々の修正を優先した方がいいと思います。 特に今回のような場合は、それほど時間に差が無いと思います。 | ||||
|
投稿日時: 2005-06-20 18:30
わかりました。
私もわくさんの意見に賛成なので次からは名前で書くようにします。 勉強になりました! |
1