2013-07-30 100 views
0

我正在寫使用單選按鈕,其中,當用戶選擇一個特定的選擇程序,然後參數和SQL語句會被分配:查詢不返回輸出

if(r1.isSelected())//SNo 
    { 
     cmd="SELECT * FROM CALLDETAILS WHERE SNo=?"; 
     parameter=tf1.getText(); 

    } 
    else if(r2.isSelected())//Month-wise 
    { 
     cmd="SELECT SNO, DATE, COMPANY,STATUS FROM CALLDETAILS WHERE MONTH(DATE)=?"; 
     parameter=tf1.getText(); 
    } 
    else if(r2.isSelected())//Username 
    { 
     cmd="SELECT * FROM CALLDETAILS WHERE ATTENDED_BY=?"; 
     parameter=tf1.getText(); 
    } 
    else if(r3.isSelected())//Company 
    { 
     cmd="SELECT * FROM CALLDETAILS WHERE COMPANY=?"; 
     parameter=tf1.getText(); 
    } 
    else//Status 
    { 
     cmd="SELECT * FROM CALLDETAILS WHERE Status=?";//Resolved. in process, pending 
     parameter=tf1.getText();    
    } 

當我運行此:

try 
    { 

     Connection con=DriverManager.getConnection("jdbc:mysql://localhost/tenderdetails?user=root&password="); 
     PreparedStatement ps; 
     ps=con.prepareCall(cmd); 
     ps.setString(1,parameter); 

     ResultSet rs=ps.executeQuery();  

     while(rs.next()) 
     { 
      int sno=rs.getInt(1); 
      Timestamp dt=rs.getTimestamp(2);   
      System.out.println(sno+ " "+dt);//HERE! 
     } 

     con.close(); 
     System.out.println("here too"); 
    } 

    catch(SQLException se) 
    { 
     JOptionPane.showMessageDialog(this, "Error: "+se.getMessage()); 
    } 

沒有標明這裏的語句的輸出。這是爲什麼?

+3

因爲你的SQL語句不返回任何命中...... – home

+2

看來你的查詢沒有返回任何東西(while循環不執行的話)。 – kosa

+0

您是否遇到拋出的異常? –

回答

0

檢查getConnection()字符串和您的查詢/準備好的語句。

因爲它不返回任何結果的問題很可能在這裏。

3

這似乎是你的陳述不一定設置你的想法;

else if(r2.isSelected())//Month-wise // <-- r2 
{ 
    cmd="SELECT SNO, DATE, COMPANY,STATUS FROM CALLDETAILS WHERE MONTH(DATE)=?"; 
    parameter=tf1.getText(); 
} 
else if(r2.isSelected())//Username  // <-- r2 again...? Won't ever be hit. 

此外,雖然最有可能不是你的問題,getInt(1)getTimestamp(2)似乎與SELECT *有點危險。

+0

哦,我沒有意識到。將糾正這一點。 – user2602294

+0

我打算改變SELECT *。這只是爲了讓代碼運行。 – user2602294