- - PR -
テーブル名の取得について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-08-21 13:12
sp_tables 'table'
これではどうでしょうか。 ダブルクォーテーションで囲むというのが少々気になりましたので。 クエリアナライザ(またはSqlServer ManagingStudio)においても、 実行できましたので大丈夫だとは思います。 似たようなストアドプロシージャ(キー情報の取得)を、DataReaderを通した形で 利用したことがありますので、同様にテーブル情報の取得である sp_tablesも動作すると思います。 | ||||
|
投稿日時: 2006-08-21 15:07
Ahfさん、レスありがとう御座います。
sp_tablesで取得は出来たようなのですが、 データの読み出しが出来ませんでした。。 下記のように、やってみたのですが、 『データが入っていません』というような、 エラーが表示されてしまいます。 ただ、クエリアナライザで実行してみたところ 値は、帰ってきます。。 sp_tablesの場合では、取得の仕方が特別なのでしょうか? 通常に、データベースに適当なデータを入れて試したところ データは、取得できました。 −−−−− SqlDataReader Reader; cmd.CommandText = "sp_tables @table_type='table'"; Reader = cmd.ExecuteReader(); Reader.Read(); test.text = Reader.GetString(0); ← データが何もありません。 −−−−− 御願いいたします。 [ メッセージ編集済み 編集者: ken 編集日時 2006-08-21 15:08 ] | ||||
|
投稿日時: 2006-08-22 13:04
kenさん大変申し訳ありません。
sp_tablesのパラメータを間違っておりました。 テーブル種別だけはダブルクォートで囲むという、最初にkenさんの言われた方法が正解でした。失礼いたしました。 なお、実際にこちらの環境にてSqlDataReaderを利用してsp_tablesを実行して みたところ、こちらではうまく結果が取得できました。 その際のSQL文は次のようにして実行しております。 "sp_tables @table_type = " _ + ControlChars.Quote + "'table'" + ControlChars.Quote 当方Vb.Netなため次のようなロジックにて確認してあります。 (接続までは省略) Dim result As System.Data.SqlClient.SqlDataReader (SqlCommandクラスのExecuteReaderメソッドを実行) If result.Read Then Console.WriteLine("1:" + result.GetSqlString(0)) Console.WriteLine("2:" + result.GetString(0)) Else Console.WriteLine("EOF") End If 念のため、ということで(1)と(2)双方確認してみましたが、どちらの 方法でも結果セットより取得できました。 | ||||
|
投稿日時: 2006-08-22 14:30
Ahfさん、レスありがとうございます。
お手数かけて、すみません。 こちらも、レスを参考にして −−−−−−− SELECT * FROM sysobjects WHERE (xtype = 'U')and(uid = '5') −−−−−−− 上記のやり方で、うまく出来たところです。 Ahfさんの方法でも、試してみたいと思います。 ありがとう御座いました。 また、よろしく御願いいたします。 [ メッセージ編集済み 編集者: ken 編集日時 2006-08-22 14:32 ] |