在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
。
答案 0 :(得分:3)
只需连接查询字符串
中的列名称即可preStatement = connection.prepareStatement("SELECT "+paramColumn+", Date FROM " + paramTable + " WHERE [...]");