0
Statement st=null;
ResultSet rs=null;
Connection con=null;

String sql="select * from employee;";

try{

                con= new Database().getMySqlConnection();
                st=con.prepareStatement(sql);
                rs=st.executeQuery(sql);

    while(rs.next())
    {
if(rs.getInt("id")!=-1)     
{
  %>
 <tr><td align="center"><%=rs.getInt("id")%></td> 
 <td align="center"><%=rs.getString("name")%></td>
  <td align="center"><%=rs.getInt("salary")%> </td>
   <td align="center"><%=rs.getString("Designation") %></td>
}
    else
    {

        out.println("table is empty");
    } 
    }   
  }


                catch (SQLException ex) {
                    System.out.println(ex.getMessage());
                }

在这个程序中,我想在页面上的表格中显示数据,如果不为空,则从表格中检索,如果表格为空,则显示消息或打印该表格为空。但它不能显示任何消息,当表中有数据时它可以正常工作。
但是当表为空时,不会显示错误消息。

我在网上看到很多例子,执行 wasNull() 方法、 islast()、 iffirst() 方法等,但问题仍然存在。

请提出解决方案。这个程序是在java中。

4

2 回答 2

3

您的空表语句应该在 while 语句之外。使用旗帜。

while(rs.next())
{
    flag = 1;
    if(rs.getInt("id")!=-1)     
       {
        <tr><td align="center"><%=rs.getInt("id")%></td> 
        <td align="center"><%=rs.getString("name")%></td>
        <td align="center"><%=rs.getInt("salary")%> </td>
        <td align="center"><%=rs.getString("Designation") %></td>
       }
}   
if ( flag == 0 )
     out.println("Table is empty");

next() 方法一次将光标向前移动一行。如果进入while循环,则表示表中有东西。

于 2012-06-02T06:03:38.170 回答
2

您的消息在 while 循环中。如果表中没有数据,则 rs.next 将返回 false。您必须将 msg 移到循环之外。

您也可以使用值在 while 中更改的布尔 var 来查找是否返回了任何数据,或者您可以使用 if-else 和 do-while 的组合。

 if(rs.next()){
     do{
        //process data
       }while(rs/next);
 }else{
     //Print MSG
 }
于 2012-06-02T06:04:42.453 回答