- PR -

テーブル名取得について

1
投稿者投稿内容
会議室デビュー日: 2007/04/06
投稿数: 6
投稿日時: 2007-04-06 18:36
すいません教えてください。

VB.NetとSQLServerを使用しています。

SqlCommandからExecuteReaderでSqlDataReaderを使用しています。
抽出文で"SELECT TABLE_A.* FROM TABLE_A WHERE TABLE_A.B = 1"抽出した時になんらかの方法でテーブル名の"TABLE_A"という情報を取得したいのですが出来ないものなのでしょうか?
SqlDataReaderのGetSchemaTableを使用してみたのですが思い通りの情報が得られません。

どなたか御教授願います。宜しくお願い致します。

[ メッセージ編集済み 編集者: 未記入 編集日時 2007-04-06 18:37 ]

[ メッセージ編集済み 編集者: 未記入 編集日時 2007-04-06 19:18 ]
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-04-06 18:58
私の知る限り、特別な方法はないです。
SqlCommand には複数のテーブルを結合したSQL等も書けますし…
無理やりやるなら、CommandText の文字列を解析することになるでしょうけど。

そもそも、SqlCommand からテーブル名を取得しなければならないという状況が好きではないです。
SqlCommand の作成時にはわかる情報のはずですから、そこから受け渡す方がよいのではないでしょうか?
会議室デビュー日: 2007/04/06
投稿数: 6
投稿日時: 2007-04-06 19:16
KIさん 早速の書込ありがとうございます。

>そもそも、SqlCommand からテーブル名を取得しなければならないという状況が好きではないです。
今、データを抽出してデータを書込むクラスを作成しているのですがReaderで呼び出して、呼び出したデータに対して「INSERT」「UPDATE」「DELETE」の文を自動で作成してあげたいんのでこんな状況になってます。

>SqlCommand の作成時にはわかる情報のはずですから、そこから受け渡す方がよいのではないでしょうか?
確かに始めにテーブル名を渡す方が楽なんですが…フィールド名から、このフィールドはこのテーブルを使用していますよってわからないものなのでしょうか?
にー
常連さん
会議室デビュー日: 2006/04/30
投稿数: 35
投稿日時: 2007-04-07 11:31
カラム名からテーブル名を取得することはできないと思います。カラム名は別名も可能ですから。

できないのであれば、発想を変えることが重要だと思います。

KIさんの言うように、Selectを作成する時点で、Insert等のSQL文を自動作成するようにした方が良いでしょう。プログラムもすっきりとし、後で見た時にも分かりやすいものになると思います。
会議室デビュー日: 2007/04/06
投稿数: 6
投稿日時: 2007-04-09 08:47
にーさん返答ありがとうございます。

そうですか…フィールド名からテーブル名を取得するのは難しいのですね。
もう少しだけ探してみると共に一から考えたいと思います…


[ メッセージ編集済み 編集者: 未記入 編集日時 2007-04-09 09:20 ]
1

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