如何将JSP参数传递给SQL查询?

时间:2017-01-30 12:43:26

标签: java sql jsp

我想编写一个包含JSP参数的SQL查询。 我试过这样的

String sqlstring = "\"select"+Activity+" from backgroundcost where onpremprice =' "
                         +service+" '\"";
PreparedStatement ps = con.prepareStatement(sqlstring);
ResultSet rs = ps.executeQuery();

我收到了错误。

3 个答案:

答案 0 :(得分:1)

首先,我希望你的意思是service是一个来自JSP形式的变量,这个变量最终在你的Controller中,你的控制器将对数据库层的访问委托给另一个类。

您的请求存在多个问题:

  1. 您在SQL查询中使用引号,不应该。
  2. 什么是Activity?可能你错过了'选择'和'活动'的价值之间的空格特征
  3. 'PreparedStatement`的目标是避免SQL注入。您必须使用我在下面显示的代码,而不是直接在构建的SQL语句中注入的参数。

  4. 如果您有多个字符串连接

  5. ,请考虑使用StringBuilder

    String sqlstring = "select activity from backgroundcost where onpremprice = ?";
    
    PreparedStatement ps = con.prepareStatement(sqlstring);
    ps.setString(1, service);
    ResultSet rs = ps.executeQuery();
    

答案 1 :(得分:0)

不是简短的回答。在视图中使用数据库逻辑是一种糟糕的设计。将params从你的jsp传递给后端java bean,让你填写查询

答案 2 :(得分:0)

让它像这样..

  String sqlstring = "select * from backgroundcost where onpremprice ='"+service+" '";
PreparedStatement ps = con.prepareStatement(sqlstring);
ResultSet rs = ps.executeQuery();

//代替*你可以输入你需要选择的列名。