JDBC 中的命名参数
JDBC 中是否有命名参数而不是位置参数,例如下面 ADO.NET 查询中的 @name
、@city
?
select * from customers where name=@name and city = @city
Are there named parameters in JDBC instead of positional ones, like the @name
, @city
in the ADO.NET query below?
select * from customers where name=@name and city = @city
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
JDBC 不支持命名参数。除非你一定要使用普通的 JDBC(这会带来痛苦,让我告诉你),我建议使用 Springs Excellent JDBCTemplate,它可以在没有整个 IoC 容器的情况下使用。
NamedParameterJDBCTemplate支持命名参数,你可以这样使用它们:
JDBC does not support named parameters. Unless you are bound to using plain JDBC (which causes pain, let me tell you that) I would suggest to use Springs Excellent JDBCTemplate which can be used without the whole IoC Container.
NamedParameterJDBCTemplate supports named parameters, you can use them like that:
为了避免包含大型框架,我认为一个简单的自制类就可以解决问题。
处理命名参数的类示例:
调用该类的示例:
请注意,上面的简单示例不处理两次使用命名参数。它也不处理在引号内使用
:
符号。To avoid including a large framework, I think a simple homemade class can do the trick.
Example of class to handle named parameters:
Example of calling the class:
Please note that the above simple example does not handle using named parameter twice. Nor does it handle using the
:
sign inside quotes.Vanilla JDBC 仅支持 CallableStatement 中的命名参数(例如 setString("name", name)),即使如此,我怀疑底层存储过程实现也必须支持它。
如何使用命名参数的示例:
Vanilla JDBC only supports named parameters in a
CallableStatement
(e.g.setString("name", name)
), and even then, I suspect the underlying stored procedure implementation has to support it.An example of how to use named parameters:
您不能在 JDBC 本身中使用命名参数。您可以尝试使用 Spring 框架,因为它有一些扩展允许在查询中使用命名参数。
You can't use named parameters in JDBC itself. You could try using Spring framework, as it has some extensions that allow the use of named parameters in queries.
普通 JDBC 不支持命名参数。
如果您使用 DB2,则直接使用 DB2 类:
编辑:Db2 v11.5 的新链接:
编辑 2:z/OS 上的 Db2 (v13) 的新链接
Plain vanilla JDBC does not support named parameters.
If you are using DB2 then using DB2 classes directly:
EDIT: New links for Db2 v11.5:
EDIT 2: New links for Db2 on z/OS (v13)