2017-08-10 75 views
-3

我想我太累了或什么..在这里看不到什么不好。我的代码有什么问题?有小费吗? JAVA MYSQL

 String select = "SELECT project_id FROM project WHERE project_key = ?"; 

    PreparedStatement preparedStatement1 = con.prepareStatement(select); 
    preparedStatement1.setString(1, project_key); 
    ResultSet rs = preparedStatement1.executeQuery(); 

    int project_id = 0; 

    while(rs.next()) { 
      project_id = rs.getInt("project_id"); 
    } 
    System.out.println(project_id); 

问题是为什么project_id返回我0?

P.S.在数据库中,我确实已将我的项目表完全插入,并且是的,我重复检查了询问的值。

+2

要在循环中处理的最后一条记录具有零的“project_id”值。 –

+0

你为什么要做setString?通常键是整数。 setInt会更合适。 – Tschallacka

+0

单步执行内置于IDE中的调试器中的代码。到达调试器是第一件事,而不是最后一件事。而在SO上发布即将结束。顺便说一句,“while”在那里是错误的控制结构。它可以工作,但是它是从**单行**中检索值的错误结构。在处理单行时,'if'是正确的结构。 –

回答

-2

尝试下面的代码,看看结果集返回的任何值

rs.first(); 
System.out.println(rs.getInt("project_id")); 

如果你没有看到它意味着问题与查询做任何价值。什么都没有返回,并且这个集合是空的。 (我要发表评论,但我没有足够的声誉)

+0

为什么这个答案得到downvoted两次,而它是公认的答案? –

+0

我不会downvoted,但它可以被认为是错误的。因为它可以抛出异常。 –

0

更改代码是

while(rs.next()) { 
     int project_id = rs.getInt("project_id"); 
     System.out.println(project_id); 
} 

我想你会看到没有值(如果没有与project_key问题)

或许多值最后一个将为零!