使用时,我是相当新的SQL和我目前返工另一个 程序员开发了一个Java程序表示。当我打印他查询select语句的一个脚本包含SQL语法:什么“=?”在SQL查询
SELECT * from database WHERE id = ?
我只是想知道什么是=?
应该怎么办?我一直在搜索,我找不到任何相关的答案。
使用时,我是相当新的SQL和我目前返工另一个 程序员开发了一个Java程序表示。当我打印他查询select语句的一个脚本包含SQL语法:什么“=?”在SQL查询
SELECT * from database WHERE id = ?
我只是想知道什么是=?
应该怎么办?我一直在搜索,我找不到任何相关的答案。
这不是一个SQL符号,而是一个JDBC (Java Database Connectivity)符号。 ?
被替换为单独指定的参数。使用这种方法,而不是试图将参数自己替换为字符串,有助于防止SQL injection的风险。
的?
是一个占位符,一个参数,这样就可以在动态传递,并返回不同的参数不同的结果。
某处的代码,你应该看到,他增加了参数Statement对象并执行它。
最有可能你正在使用的工具,将取代“?”具有实际价值。我曾在其他工具(如SQL DTS(数据转换服务)......)上看到过这一点,但这显示了我的年龄:)
?
不是SQL语言的一部分。
?
是与JDBC一起使用时用于SQL查询的占位符Prepared statement。使用准备好的语句有advantages over the normal statement,特别是当您重复使用它时(例如在循环中)。
下面是一个例子: “?”
PreparedStatement ps =
connection.prepareStatement("select name from users where user_name = ?");
ps.setString(1, "user1");
的当运行查询时将被“user1”取代,并返回用户名为“user1”的用户的名字。
您使用的是什么RDBMS? – 2012-02-03 03:43:53
'?'意味着你即将用实际的ID – 2012-02-03 03:44:15
来取代它@shark我认为他使用Oracle作为后端目前使用MySQL作为我的开发数据库 – Devjosh 2012-02-03 03:46:36