2012-06-02 34 views
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編寫的。

+0

我已經在選擇使用計數方法,,,但不工作....... –

+0

-1 - 請不要格式化我們的代碼並正確書寫您的問題的禮貌。他們在學校教你標點符號嗎?他們是否教你關於你的編程課的縮進?這個例子確實很可怕。 –

回答

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()method保持在一個時間移動光標前進一行。如果你輸入while循環,這意味着表中有東西。

+0

y ....現在它的工作........... thnx很多.............. –

+0

善待upvote並接受答案。 :-) –

+0

先生我沒有15聲望 –

2

您的消息在while循環中。如果表中沒有數據,則rs.next將返回false。 你必須在循環之外移動味精。

ither你可以使用boolean var,它的值隨時改變以查找是否有數據返回,或者你可以使用if-else & do-while的組合。

if(rs.next()){ 
    do{ 
     //process data 
     }while(rs/next); 
}else{ 
    //Print MSG 
} 
+0

先生什麼是如果(rs.next)和while(rs.next)之間的差異.....我認爲如果檢查布爾值,而運行,直到nextnot在表中找到...是它?????? ? –

+0

無。除了用於循環n次,而如果提供基於一定條件執行代碼塊的選項爲真或假。 while(rs.next) - while內部的代碼不會被執行。在if的情況下,如果rs.next返回false,則將執行else塊。 –