将列名称作为PreparedStatement的输入参数

时间:2013-11-15 18:44:21

标签: java sql parameters prepared-statement

我已经在这里(以及其他论坛)使用了搜索,但是没有找到我正在尝试的答案。

我知道它可以通过其他方式轻松完成,这只是一个小沙盒框架我正在为大学课程编写代码......在真实环境中我只需要Spring,Hibernate等。

所以我所做的就是用POJO编写一个小的通用数据访问层,使用通用方法检索,检查或插入数据到数据库(Oracle)。其中大部分是通过PreparedStatements完成的。

只要我没有连接,这是有效的...是否可以将列作为参数放入?

示例:

Table A has Attribute X + others
Table B has Attribute Y + others

带有查询SELECT * FROM A,B WHERE "A"."X" = ?

的PreparedStatement

然后填写“B”。“Y”作为参数...

数据库不会抛出错误或异常,但执行语句后返回的ResultSet为空。这是不可能的,还是我只是错过了一些逃避?

我正在使用PreparedStatement.setString(int index, String value)填写参数...缺乏想法我可以使用其他setX方法......

同样,在一个真实的项目中,我永远不会自己编写代码,而是使用类似Spring或Hibernate的东西,而不是重新发明轮子,但我认为这是一个有趣的练习来编写这样一个通用的小数据访问层自己。

1 个答案:

答案 0 :(得分:5)

不,JDBC不允许这样做。只能设置列值。如果要对sql语句进行动态更改,则必须在创建PreparedStatement之前执行此操作。