我想根据用户通过jTextField传递的列动态执行sql语句。
str=select "+jTextField.getText()+" from table ;
此语句可以正常工作,列名没有空格。 示例:假设我有两列=优先级和请求类型。
如果我输入优先级,上面的语句很有效,但当我使用请求类型
时失败和 如果我使用声明
str=select ["+jTextField.getText()+"] from table ;
然后请求类型条目将正常工作,但优先级不会。
任何想法都可以解决这个问题。
答案 0 :(得分: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 ;