2017-11-06 19 views
-2

これは非常に基本的かもしれないが、まだ具体的なものは見つけられませんでした。問題は、全く同じ構造の2つのテーブルを持つアプリケーションがあるかどうかです(臭いかもしれませんが、ファイルの100をリファクタリングできないので無視してください)。これらのテーブルからカウンタコードの重複を読み取っているときに、クエリを動的に生成することをお勧めしますか?または、私は単一の責任プリンシパルを尊重するためにクエリを分離しておく必要がありますか?誰かが私が勉強することができる何らかの種類のリソースに手伝ったり案内したりできますか?テーブル名をパラメータとして使用してmysqlクエリを生成

+0

あなたは、変数テーブル名を使用して意味ですか?これは一般的に、クエリ中でテキストを使用する前にテキストを検証していない限り、プリペアドステートメントの使用に反するため、おそらくリファクタリングするラインがたくさんあるでしょう。 – GrumpyCrouton

+1

"100個のファイルをリファクタリングすることはできません" - 可能です。 – symcbean

答えて

0

PreparedStatementのパラメータとしてテーブル名を直接使用することはできないため、クエリを動的に構築する必要があります。あなたは、メタデータ・メソッドからテーブルに関する情報を取得することができます。

Connection con; DatabaseMetaData meta = con.getMetaData(); ResultSet rs = meta.getTables (null, null, tableName, null); ResultSet rs = meta.getColumns (null, null, tableName, null);

関連する問題