这个JDBC代码片实现了什么?

时间:2012-10-17 06:59:33

标签: sql oracle jdbc

String q = "SELECT attr FROM students foo =? AND bar = ?";
PreparedStatement s= connection.prepareStatement(q);
s.setString(1,"a");
s.setString(2."b");
ResultSet rs = s.executeQuery();
if(rs.next())
{
 System.out.println("aba");
}
else
{
 System.out.println("zab");
}

我不完全确定,但我的解释是它执行查询以从“学生”中找到“attr”,其中foo是某种东西而bar是某种东西。如果查询成功结果,则打印出aba,否则将打印出zab。

如果我错了,请纠正我。是什么s.SsetStrings(1,“a”)是为了什么?究竟问号代表什么?

2 个答案:

答案 0 :(得分:2)

你大多是对的。如果students表格中有至少一个行,包含字段foo='a'bar='b',则会打印出aba,如果没有这样的行存在,打印出zab

问号和0 .setString(1,"a")陈述密切相关。 ?表示查询的参数(占位符,如果更方便掌握),s.set<datatype>()方法'填充'。第一个参数指定要填充的参数,第二个参数指定值。

推荐阅读:Using PreparedStatements

答案 1 :(得分:1)

查询中的问号表示稍后要添加的值。他们充当占位符。

因此,您只需准备一次查询,然后使用例如

设置值
s.setString(1,"a");

这会将第一个值(也就是第一个问号)设置为字符串值a。其他类型有各自的功能,例如setInt()setLong()