0
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");
}

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

如果我错了,请纠正我。s.setStrings(1,"a") 是干什么用的?问号到底代表什么?

4

2 回答 2

2

你是对的。如果表中至少有一行students,带有字段foo='a'and bar='b',则打印出aba,如果不存在这样的行,则打印出zab

问号和the0.setString(1,"a")语句密切相关。表示查询的?参数(占位符,如果这样更方便掌握的话),s.set<datatype>()方法“填充这些”。第一个参数指定要填写的参数,第二个指定值。

推荐阅读:使用 PreparedStatements

于 2012-10-17T07:10:20.960 回答
1

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

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

s.setString(1,"a");

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

于 2012-10-17T07:05:42.517 回答