0

テーブル名に特殊文字を含むテーブルのメタデータを取得しようとしています。通常のシナリオでは、私のコードは正常に動作しますが、getColumns が値を返さないテーブル "TABLE[]}\|ABC" があります。

ResultSet rrc = meta.getColumns("SCHEMA_NAME", null, "TABLE_NAME", "%");

また、私が見つけた何か奇妙な動作があります。最初のパラメーターにスキーマ名を渡し、残りの 3 つのパラメーターに他の値を渡すだけです。

 ResultSet rrc = meta.getColumns("SCHEMA_NAME", null, null, "%");
 while (rrc.next()) {
    System.out.println("-- col: " + rrc.getString(4));
 }

rrc.getString(4)(COLUMN_NAME)他の組み合わせを変更rrc.getString(3)(TABLE_NAME)または追加して、同じ結果セットに対して受け取っているレコードの数を見つけてください。選択内容によって異なります。

4

1 に答える 1

0

の 3 番目のパラメータはDatabaseMetaData.getColumns(...)と呼ばれtableNamePatternます。これはLIKEパターンであり、リテラルではありません。LIKE-pattern では、バックスラッシュ ( )\はエスケープ文字です。したがって、 という名前のテーブルに一致させたい場合はTABLE[]}\|ABCTABLE[]}\\|ABCJava 文字列として"TABLE[]}\\\\|ABC".

于 2013-01-26T20:00:46.517 に答える