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

时间:2012-02-03 03:42:08

标签: java sql jdbc syntax

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

SELECT * from database WHERE id = ?

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

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

?不是SQL语言的一部分。

答案 3 :(得分:1)

与JDBC Prepared statement 一起使用时,?是SQL查询中使用的占位符。使用准备好的语句时会特别重复使用advantages over the normal statement(比如在循环中)。

答案 4 :(得分:0)

以下是一个例子:

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

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