繁体   English   中英

在SQL查询中使用时,“=?”表示什么

[英]What does “=?” represent when used in an SQL query

我是SQL的新手,我正在重新编写另一个程序员开发的java程序。 当我打印他的一个查询select语句时,脚本包含sql语法:

SELECT * from database WHERE id = ?

我只想知道什么=? 应该怎么做? 我一直在谷歌搜索,我找不到任何相关的答案。

它不是SQL表示法,而是JDBC(Java数据库连接)表示法。 ? 被替换为单独指定的参数。 使用此方法,而不是尝试将参数替换为字符串,有助于防止SQL注入的风险。

? 是一个占位符,一个参数,以便您可以动态传递它并为不同的参数返回不同的结果。

在代码中的某处,您应该看到他将参数添加到Statement对象并执行它。

很可能你使用的工具将取代“?” 具有实际价值。 我之前在其他工具中看到过这种情况,例如SQL DTS(数据转换服务)......但是这显示我多大了:)

? 不是SQL语言的一部分。

? 是与JDBC Prepared语句一起使用时在SQL查询中使用的占位符。 使用预准备语句优于正常语句,特别是当您重复使用它时(例如在循环中)。

这是一个例子:

PreparedStatement ps = 
    connection.prepareStatement("select name from users where user_name = ?");
ps.setString(1, "user1");

“?” 运行查询时将替换为“user1”,并返回用户名为“user1”的用户的名字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM