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

■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
    
    

マルチポストを報告
違反を報告
引用返信 削除キー/
■35547 / ResNo.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 の方が良いですね。
違反を報告
引用返信 削除キー/
■35548 / ResNo.2)  Re[2]: データベースからのテーブル名一覧の効率的な取得方法
□投稿者/ Wan 付き人(87回)-(2023/11/22(Wed) 14:30:50)
  • アイコン魔界の仮面弁士
    いつも御指南ありがとうございます。

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

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

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

違反を報告
引用返信 削除キー/
■35549 / ResNo.3)  Re[3]: データベースからのテーブル名一覧の効率的な取得方法
□投稿者/ Wan 付き人(88回)-(2023/11/22(Wed) 14:31:16)
  • アイコン解決済みです。

解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -