PreparedStatement中的存储过程参数名称而不是参数索引?

时间:2015-08-06 11:10:22

标签: java jdbc prepared-statement

现在,当我在PreparedStatement中调用存储过程时,我必须将参数添加到CallableStatement,如下所示:

procStmt.setString(1, "a");
procStmt.setString(2, "b");
procStmt.setString(3, "c");
// etc...

如果您在调用的存储过程中有大约50个以上的参数,并且并非所有这些参数都是必需的,那么这会非常繁琐。有没有办法像这样做:

procStmt.setString("myParameter", "a");
procStmt.setString("yourParameter", "b");
procStmt.setString("ourParameter", "c");
// etc...

这样,参数会直接传递给需要它们的参数,您不必担心通过参数发送的顺序或需要发送空String个对象等。

2 个答案:

答案 0 :(得分:2)

JDBC不支持命名参数。如果您使用Spring,我建议使用Spring JDBCTemplate NamedParameterJdbcTemplate。它可以在没有整个IoC容器的情况下使用。

答案 1 :(得分:2)

为什么使用PreparedStatement ..您可以使用CallableStatement调用存储过程,Callable Statement提供按参数名称设置值的选项...

请参阅http://docs.oracle.com/javase/7/docs/api/java/sql/CallableStatement.html#setString(java.lang.String,%20java.lang.String)