DOBON.NETプログラミング道掲示板

ツリー一括表示

Nomalアイコン データベースからのテーブル名一覧の効率的な取得方法 /Wan (23/11/21(Tue) 10:22) #35546
Nomalアイコン Re[1]: データベースからのテーブル名一覧の効率的な取得方法 /魔界の仮面弁士 (23/11/21(Tue) 13:32) #35547
  └Nomalアイコン Re[2]: データベースからのテーブル名一覧の効率的な取得方法 /Wan (23/11/22(Wed) 14:30) #35548
    └Nomalアイコン Re[3]: データベースからのテーブル名一覧の効率的な取得方法 /Wan (23/11/22(Wed) 14:31) #35549 解決み!


親記事 / ▼[ 35547 ]
■35546 / 親階層)  データベースからのテーブル名一覧の効率的な取得方法
□投稿者/ Wan 付き人(86回)-(2023/11/21(Tue) 10:22:38)
  • アイコン環境/言語:[VisualBasic2019 Windows10 Basic Framework4.7.2] 
    分類:[.NET] 

    あるデータベースのテーブル名一覧をList<String>で返す関数を作りました。
    一応、目的通りに動いているのですが、なんとなく?もっと、効率のいい方法があるような気がしていますが、まったく思いつきません。
    ベテランの方のアドバイスを頂ければ幸いに存じます。
    宜しくお願い致します。
    
    Private Function GetTableNames(con As SqlConnection) As List(Of String)
         Dim dtTableNames As New DataTable
    Dim Da As New SqlDataAdapter
         Dim SqlGetTableNames As String = "select name from sys.tables;"
         Dim cmd As New SqlCommand(SqlGetTableNames, con)
         Da.SelectCommand = cmd
         Da.Fill(dtTableNames)
         Dim query = From order In dtTableNames.AsEnumerable
                     Select order.Field(Of String)("name")
         Dim tableNameList As List(Of String) = query.AsEnumerable.ToList
         Return tableNameList
     End Function
    
    

違反を報告
[ □ Tree ] 返信 削除キー/

▲[ 35546 ] / ▼[ 35548 ]
■35547 / 1階層)  Re[1]: データベースからのテーブル名一覧の効率的な取得方法
□投稿者/ 魔界の仮面弁士 大御所(1567回)-(2023/11/21(Tue) 13:32:04)
  • アイコンNo35546に返信(Wanさんの記事)
    > あるデータベースのテーブル名一覧をList<String>で返す関数を作りました。

    SqlCommand なので、あるデータベースとは「SQL Server」ですね。
    sys.tables は対 SQL Server に対してしか使えませんが、
    手法としては特に問題無いと思いますよ。


    データベースへの依存度を減らした汎用的な方法としては、
    OLE DB Provider に対してスキーマを問い合わせる手法があります。

    'tbl = con.GetSchema("MetaDataCollections")
    'tbl = con.GetSchema("Databases")
    tbl = con.GetSchema("Tables")
    'tbl = con.GetSchema("Columns")
    'tbl = con.GetSchema("IndexColumns")
    など。
    ADODB の場合は OpenSchema メソッドで同じことができます。


    > なんとなく?もっと、効率のいい方法があるような気がしていますが、まったく思いつきません。
    実行効率面では、DataAdapter.Fill を使うよりは、ExecuteReader の方が良いですね。
違反を報告
[ 親 35546 / □ Tree ] 返信 削除キー/

▲[ 35547 ] / ▼[ 35549 ]
■35548 / 2階層)  Re[2]: データベースからのテーブル名一覧の効率的な取得方法
□投稿者/ Wan 付き人(87回)-(2023/11/22(Wed) 14:30:50)
  • アイコン魔界の仮面弁士
    いつも御指南ありがとうございます。

    凄く、不安だったのですが、太鼓判を押して頂けたようで安心しました。

    加えて、教えて頂いたことは、引き続き熟読して、マスターしていきたいと思います。

    ありがとうございました。

違反を報告
[ 親 35546 / □ Tree ] 返信 削除キー/

▲[ 35548 ] / 返信無し
■35549 / 3階層)  Re[3]: データベースからのテーブル名一覧の効率的な取得方法
□投稿者/ Wan 付き人(88回)-(2023/11/22(Wed) 14:31:16)
  • アイコン解決済みです。

解決み!
違反を報告
[ 親 35546 / □ Tree ] 返信 削除キー/


Mode/  Pass/


- Child Tree -