2017-01-02 28 views
0

我有兩個具有相同屬性的數據庫表。我想使用從表n第二個更新表中讀取的兩個sql語句。在SQL中使用變量而不是TableName

String tableName = ""; 
String value = request.getParameter("PageId"); 
if(value=="Alflah"){ 
    tableName = "PARKTABLEONE"; 
} 
if(value=="ParkN"){ 
    tableName = "PARKTABLE"; 
} 

一個Statment:

ResultSet rs= st.executeQuery("Select * From " +tableName+ " WHERE ID = \'"+ login + "\' "); 

第二屆聲明:

String query = "update " + tableName + " set Place1 = ?, Place2 = ? WHERE ID = \'"+ login + "\'"; 

所以,我想在這裏使用的表名變量。 例如,如果表名是Alflah,它應該從alflah讀取 它可能與否?請糾正我的錯誤在哪裏?

+2

那麼,有什麼問題呢?當你嘗試時會發生什麼? –

+3

除了別的,你不應該比較這樣的字符串 - 請參閱http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java –

+3

備註:與'tableName無關',你的代碼可以廣泛應用於[SQL注入攻擊](http://bobby-tables.com)和無害的非攻擊值。使用參數化查詢。 –

回答

1

tablename是空的,這就是爲什麼它在17.如果WHERE在17開始,那麼它必須是空列表示錯誤,只算個字符

+0

是的,它的字符串值沒有更新,這就是爲什麼 –

+0

它現在的工作,我已經在以前的jsp中設置tableName值,然後使用request.getParameter(「tableName」)獲取此值; –

相關問題