如何动态执行sql语句

时间:2013-07-10 17:24:39

标签: sql

我想根据用户通过jTextField传递的列动态执行sql语句。

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

此语句可以正常工作,列名没有空格。 示例:假设我有两列=优先级和请求类型。

如果我输入优先级,上面的语句很有效,但当我使用请求类型

时失败

和 如果我使用声明

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

然后请求类型条目将正常工作,但优先级不会。

任何想法都可以解决这个问题。

1 个答案:

答案 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 ;