2011-04-18 136 views
0
stmt="SELECT * FROM people_?" 

stmt.setString(1, year); 

我嘗試調用的表名是基於year(people_2009,people_2010等),我將年設置爲java變量。我知道上面的代碼不會工作,因爲它會在今年發表引號,但是有沒有辦法在表名上附加字符串,或者有任何其他方式來解決這個問題?將字符串附加到SQL表中

回答

0

你可能只是這樣做。

stmt="SELECT * FROM people_" + year; 

哪個應該可以正常工作。只需確保在追加年份變量之前正確地驗證該年份變量,否則最終會出現SQL注入問題。如果year的類型爲int,那麼不需要驗證來停止sql注入,但是您可能想驗證範圍以確保表存在。

+0

我有一年的字符串,這是行得通的,但我將如何繼續與我的SELECT語句,例如,如果我想添加一個WHERE子句,而不是。我會繼續從下一個引號開始,而不是結束語句嗎? – Dan 2011-04-18 14:55:47

0

這應該工作:

String stmt = "SELECT * FROM people_" + year;