Mysql 5 db にドル記号「$」を前に付けた名前のテーブルがあります。つまり、テーブル名 $MYTABLE
Spring 3.0 JdbcTemplate を使用して選択クエリを実行していますが、動作させることができませんでした。
すなわち
String tablename = "$AAPL";
private static final String STOCK_SELECT =
"select symbol, open, high, low, close, vol, ev from ?";
jdbcTemplate.query(STOCK_SELECT,
new Object[] { tablename },
new RowMapper() { .... } );
これは、おそらく $ 記号が原因で、常に InvalidSqlException をスローします。パラメータなしで通常のクエリを実行すると、つまり.
private static final String STOCK_SELECT =
"select symbol, open, high, low, close, vol, ev from $AAPL";
その後、すべてが機能します。
jdbcTemplate を使用して $ 記号をエスケープするにはどうすればよいですか?
--編集、私がやったこと-
テーブル名「$AAPL」を jdbcTemplate に渡す代わりに、SQL 文字列を手動で作成するだけです。
jdbcTemplate.query( getStockSelect("$AAPL", .., .. ));