我正在网上寻找这个问题,我不知道也许我只是无法解释我想要做的事情。
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=???;
我该怎么做?
答案 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;
之类的内容,并删除了所有数据。