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() メソッドなどを実行しましたが、それでも問題は解決しません。

Plzは解決策を提案します。このプログラムは 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() メソッドは、カーソルを一度に 1 行ずつ前方に移動し続けます。while ループに入ると、テーブルに何かがあることを意味します。

于 2012-06-02T06:03:38.170 に答える
2

あなたのメッセージはwhileループにあります。テーブルにデータがない場合、rs.next は false を返します。msg をループの外に移動する必要があります。

while で値が変化する boolean var を使用して、データが返されたかどうかを確認したり、if-else と do-while を組み合わせて使用​​したりできます。

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