- - PR -
テーブル名取得について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 ] |
|
投稿日時: 2007-04-06 18:58
私の知る限り、特別な方法はないです。
SqlCommand には複数のテーブルを結合したSQL等も書けますし… 無理やりやるなら、CommandText の文字列を解析することになるでしょうけど。 そもそも、SqlCommand からテーブル名を取得しなければならないという状況が好きではないです。 SqlCommand の作成時にはわかる情報のはずですから、そこから受け渡す方がよいのではないでしょうか? |
|
投稿日時: 2007-04-06 19:16
KIさん 早速の書込ありがとうございます。
>そもそも、SqlCommand からテーブル名を取得しなければならないという状況が好きではないです。 今、データを抽出してデータを書込むクラスを作成しているのですがReaderで呼び出して、呼び出したデータに対して「INSERT」「UPDATE」「DELETE」の文を自動で作成してあげたいんのでこんな状況になってます。 >SqlCommand の作成時にはわかる情報のはずですから、そこから受け渡す方がよいのではないでしょうか? 確かに始めにテーブル名を渡す方が楽なんですが…フィールド名から、このフィールドはこのテーブルを使用していますよってわからないものなのでしょうか? |
|
投稿日時: 2007-04-07 11:31
カラム名からテーブル名を取得することはできないと思います。カラム名は別名も可能ですから。
できないのであれば、発想を変えることが重要だと思います。 KIさんの言うように、Selectを作成する時点で、Insert等のSQL文を自動作成するようにした方が良いでしょう。プログラムもすっきりとし、後で見た時にも分かりやすいものになると思います。 |
|
投稿日時: 2007-04-09 08:47
にーさん返答ありがとうございます。
そうですか…フィールド名からテーブル名を取得するのは難しいのですね。 もう少しだけ探してみると共に一から考えたいと思います… [ メッセージ編集済み 編集者: 未記入 編集日時 2007-04-09 09:20 ] |
1