-1

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

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

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

如果我输入优先级,上面的语句很完美,但是当我使用请求类型时失败

如果我使用该语句

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

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

任何想法来解决这个问题。

4

1 回答 1

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 ;
于 2013-07-10T18:14:32.553 回答