2013-07-10 88 views
-1

我想根據用戶通過jTextField傳遞的列動態執行sql語句。如何動態執行sql語句

str=select "+jTextField.getText()+" from table ; 

此聲明正常工作的列名稱沒有空格。 例如:假設我有兩列=優先級和請求類型。

這上面的語句完美的作品,如果我輸入的優先級,但是當我使用請求類型

和 如果我使用的語句

str=select ["+jTextField.getText()+"] from table ; 

然後請求類型的條目將正常工作,但優先級不會失敗。

任何想法來解決這個問題。

+0

什麼RDBMS您使用的? – Brad

+1

與您的問題不完全相關,但這裏有一個提示:使用'PreparedStatement'來處理這種情況。 http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html –

回答

1

您可能需要修剪尾隨字段名稱/前導空格,否則它應該很好地工作:

str=select ["+jTextField.getText().trim()+"] from table ; 

你肯定Priority的是,表中的右外場的名字嗎?

另外請注意,您很容易受到SQL注入攻擊。假設你把jTextField如下:

"null] FROM table; DROP TABLE table; --" 

那麼結果是

select [null] FROM table; DROP TABLE table; --] from table ;