データベースのテーブル構造情報(テーブル名やフィールド名とその他のメタデータ)を取得します

すべての接続がデータベーステーブルの名前とフィールド情報を取得するために、データベース接続、以下の表のために取得されたと想定し、これに基づいています。

1つの インポートio.xbs.common.utils.R。
2  インポートio.xbs.datasource.config.DynamicDataSource。
3  インポートorg.springframework.beans.factory.annotation.Autowired。
4  インポートorg.springframework.web.bind.annotation.GetMapping。
5  輸入org.springframework.web.bind.annotation.RequestMapping。
6  インポートorg.springframework.web.bind.annotation.RestController。
7  
8  インポートのjava.sql.Connection。
9  インポートのjava.sql.DatabaseMetadata。
10  インポートのjava.sql.ResultSet。
11  インポートjava.sql.SQLExceptionを、
 12で 読み込み、java.util.ArrayListのの
 13は、 インポートはjava.util.List;
 14  
15  / ** 
16  *は、データベーステーブル構造の情報を取得する
 。17  *
 18である * @authorのshiyanjun
 。19   * / 
20である @RestController
 21は @RequestMapping ( "/アプリケーション" 22は、 パブリック クラスAppTestController {
 23である 
24      @Autowired
 25      プライベートデータソースDynamicDataSource、
 26は 
27      @GetMapping( "dbTest" 28      公衆dbTest R&LT(){
 29          のtry {
 30              接続コネチカット= dataSource.getConnection();
 31である 
32              //はテーブルの全てを取得する
33である              リストの<string> =表中のgetTables(コネティカット);
 34である              のSystem.out.println(「---- -----------すべてのテーブル名の"+ conn.getCatalog()+"ライブラリ---------------- "を得る);
 35              のSystem.out。 println(テーブル);
 36  
37              // フィールドゲット
38である             ため(文字列テーブル:テーブル){
 39                  リストの<string>列= OのgetColumns(コネチカット州、テーブル);
 40                 System.out.println(「テーブルのすべてのフィールド----------------」「---------------ゲット」+テーブル+ ) 、
 41である                 ;のSystem.out.println(列)
 42である             }
 43である          } キャッチ(のSQLException E){
 44は             e.printStackTrace();
 45          }
 46が         戻りR.okを();
 47      }
 48  
49      / ** 
50       *データベースを取得しますすべてのテーブル名
 51は、      *
 52である      * @paramの接続CONNデータベース
 53である      * @return そのデータベースのテーブル名に
 54である      * @throwsSQLException
 55       * / 
56      プライベートリストの<string>のgetTables(接続CONN)がスローするSQLException {
 57          のDatabaseMetaDataのmetaData = conn.getMetaDataを();
58          のResultSet結果セット= metaData.getTables(conn.getCatalog()、 "%"、NULL新しい文字列[] { "TABLE" })。
59          リスト<文字列>テーブル= 新しい ArrayListを<> ();
60          一方(resultSet.next()){
 61              列tableNameの= resultSet.getString( "TABLE_NAME" )。
62              tables.add(tableNameの)。
         }
 64の         リターン表;
 65      }
 66  
67      / ** 
68       *は、テーブルのすべてのフィールドの名前を取得し
 69       *
 70       * @param コネティカットデータベース接続
 71がある      * @paramのtableNameのテーブル名
 72       * @return テーブルのフィールド名の全
 73       * @スローのSQLException
 74       * / 
75      専用のgetColumns(接続コネティカット、文字列tableNameの)Oリストの<string> スローのSQLException {
 76          のDatabaseMetaDataザのmetaData = conn.getMetaDataを();
77個          のResultSet RS = metaData.getColumns(conn.getCatalog()、NULL、tableNameの、NULL );
78          リストの<string>列= 新規のArrayList <> ();
79          一方(rs.next()){
 80              文字列名= rs.getString( "COLUMN_NAME" )。
81              columns.add(名);
82          }
 83の         リターン列。
84      }
 85 }

 

おすすめ

転載: www.cnblogs.com/jun1019/p/11783834.html