2012-10-17 18 views
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"); 
} 

我不完全確定,但我的解釋是,它執行查詢從「學生」中找到「attr」,其中foo是某物,bar是某物。如果查詢成功,則打印出aba,否則將打印出zab。這個JDBC代碼片段實現了什麼?

糾正我,如果我錯了。什麼s.setStrings(1,「a」)是爲了?什麼問號代表什麼?

回答

2

你大部分是正確的。如果至少一個行的students表,與現場foo='a'bar='b',這種打印出aba,如果沒有這樣的行存在,它打印出zab

問號和the0 .setString(1,"a")陳述密切相關。 ?表示查詢中的參數(佔位符,如果這更方便掌握),並且s.set<datatype>()方法'填充它們'。第一個參數指定要填寫的參數,第二個參數指定值。

推薦閱讀:Using PreparedStatements

1

查詢中的問號表示稍後要添加的值。他們充當佔位符。

所以你一次,然後準備查詢只使用設置的值,例如,

s.setString(1,"a"); 

這將設置第一個值(也就是第一個問號)來的a一個字符串值。其他類型有各自的功能,例如,setInt()setLong()