PreparedStatement ResultSet - 列包含选定的列名称作为String而不是所选列的实际值

时间:2016-08-16 13:11:21

标签: java sql-server prepared-statement resultset

在Java中使用PreparedStatement我遇到了一个奇怪的情况,我无法通过SO解析或搜索网页。

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

1 个答案:

答案 0 :(得分:3)

只需连接查询字符串

中的列名称即可
preStatement = connection.prepareStatement("SELECT "+paramColumn+", Date FROM " + paramTable + " WHERE [...]");