Использование PreparedStatement в Java Я столкнулся с странной ситуацией, которую я не смог разрешить с помощью SO или поиска в Интернете.PreparedStatement ResultSet - Столбец содержит выбранное имя столбца как String вместо фактических значений выбранного столбца
preStatement = connection.prepareStatement("SELECT ?, Date FROM " + paramTable + " WHERE [...]");
preStatement.setString(1, paramColumn);
ResultSet rs = preStatement.executeQuery();
preStatement.close();
Проблема здесь состоит в том, что столбец paramColumn
, который выбран из paramTable
таблицы содержит только float
-типа значения в базе данных, однако, когда я исполняю PreparedStatement первый столбец возвращается с типом базы данных nvarchar
.
Например, если я SELECT MyValue, Date FROM ValueTable
ResultSet
будет выглядеть
________________________
| MyValue | Date |
| MyValue | 2014-09-09 |
| MyValue | 2014-09-10 |
....
в то время как он должен выглядеть
________________________
| MyValue | Date |
| 26,567 | 2014-09-09 |
| 28,623 | 2014-09-10 |
....
Когда я исполняю эту инструкцию SQL в консоли управления я получаю правильные значения нет но в Java столбец всегда содержит имя столбца как String
.
Вы не можете использовать заполнитель в качестве имени столбца – Jens
Я не думаю, что вы можете использовать 'PreparedStatement' подобное. 'preStatement.setString (1, paramColumn);' устанавливает строковый литерал, а не имя столбца. – bradimus
Действительно, конкатенация работала по предложению @sidgate –