0

私は自分のアプリケーションで何かをしようとしていますが、先に進む方法を見つけることができません。ここに私の問題があります:-

プログラムで Oracle クエリを作成したいと考えています。たとえば、DROP TABLE tableName & ALTER TABLE tableName PRIMARY KEY (col1, col2, col3....); などの 2 つのクエリがあります。

私のクラスでは、これらの2つの最終的な静的文字列を作成しました:-

private static final String DROP_TABLE = "DROP TABLE %1$s";

createDropStmt() {
    System.out.format(DROP_TABLE, tableName);
}

ご覧のとおり、このアプローチは DROP ステートメントでは正常に機能しますが、PK の場合は機能しません。実行時まで列がどれだけ存在するかがわからないためです。(private static final String PRIMARY_KEY = "ALTER TABLE %1$s PRIMARY KEY {ここに何を入れたらいいかわからない}"`)

だから、私の質問は、テンプレート文字列が動的に値を取り、クエリを構築できるように、PK に対してこの種のことを行う方法です。Javaにはそれを行うためのクリーンな方法がありますか、それとも私のアプローチは異なるべきですか?

ありがとう

4

2 に答える 2

0

複数の主キー列がある場合は、それらの名前をコンマで結合する必要があります。はjava.util.Formatter、配列または値のリストを連結する方法を提供していません。あなたはあなた自身のためにそれをしなければなりません。

独自のジョイナーを作成したくない場合は、Guavaライブラリのジョイナーを次のように使用できます。

Joiner.on(",").join(primaryKeyColumns);

次に、これをALTERTABLEステートメントに挿入します。

于 2012-07-13T08:46:36.423 に答える
-2

PreparedStatementをご覧ください。

JavaでのSQLの使用を簡素化するフレームワークもいくつかあります(ランダムな例としてhttp://www.jooq.org/)。

私は実際にはクエリ構築に文字列連結を使用しません。そのOWASPトップ10(SQLインジェクション)にあります。

于 2012-07-13T08:39:10.383 に答える