获取sql查询成为变量

时间:2016-03-09 18:24:13

标签: java mysql variables

我正在网上寻找这个问题,我不知道也许我只是无法解释我想要做的事情。

Statement stmtttt = con.createStatement();
 ResultSet resultttt = stmtttt.executeQuery("select * from logs_pms_t_project where p_id="+p_id+" ");
                    while(resultttt.next())
                                      {
 out.println(" <span class>" + resultttt.getString("phase_id")+ "</span>" );
                                      }

在该代码中,我尝试显示数据库中的某个列 - phase_id。这样我就可以将它作为变量存储到String

String phase_id=???;

我该怎么做?

2 个答案:

答案 0 :(得分:1)

我不确定你要完成什么,但是看看SQL,我认为你只期待返回1行,因此if会做,不需要while 1}}。那么你可以像这样分配phase_id var

ResultSet resultttt = stmtttt.executeQuery("select * from logs_pms_t_project where p_id="+p_id+" ");
String phase_id = null;
if (resultttt.next()) {
    phase_id = resultttt.getString("phase_id");
    // out.println ... ?
}

当然,您可以对while循环执行相同操作,但如果查询返回的行数超过1行,则phase_id将包含最后一行的ID。

答案 1 :(得分:0)

最有可能导致问题的原因是您没有将p_id括在引号中。通常,将参数传递给这样的查询是一种不好的做法。建议您阅读java.sql.PreparedStatement - 它有setString()方法来设置查询参数。

这称为“SQL注入漏洞”:如果您从输入中读取p_id,则用户可能输入了foo"; drop table logs_pms_t_project;之类的内容,并删除了所有数据。