2015-10-13 87 views
0

我從count語句中獲得了9的值,但是當我在localhost中嘗試它時,我正在獲得18個幫助我請我卡在這裏非常感謝你在java中計算mysql語句不返回正確的值

這裏是我的代碼

private int getgoods; 
String query="Select count(item_id) as 'total' from item_tb"; 
PreparedStatement pst =conn.prepareStatement(query); 
ResultSet rs = pst.executeQuery(); 

while(rs.next()) 
{ 
     getgoods=rs.getInt("total"); 
} 

JOptionPane.showMessageDialog(null, getgoods); 
// supposedly to be 18 but im getting 9 

from mysql

from java , Im using eclipse

+2

請你可以裁剪你的屏幕截圖,你沒有空白的如此巨大的金額是多少? –

+1

有兩件事要檢查:(1)你是否確定你連接到同一個數據庫?不是開發/生產/登臺/備份數據庫? (2)你確定在運行這兩個測試之間,表中的數據沒有改變嗎?像刪除行或將item_id更改爲null的行? – RealSkeptic

+0

@史蒂芬·姚,你說得對。無需修改代碼。檢查兩次到另一個不在這裏發佈的代碼。因爲你的代碼完全聽起來不錯。 –

回答

0

使用*代替item_id在這樣的查詢,

String query="Select count(*) as 'total' from item_tb"; 

,並使用if(rs.next()),而不是while循環。

+1

'while'沒有問題。 –

0

嘗試以下操作:

ResultSet rs = st.executeQuery("Select count(*) as 'total' from item_tb"); 
rs.next(); 
int count = rs.getInt(1); 

ResultSet rs = st.executeQuery("Select count(1) as 'total' from item_tb"); 
rs.next(); 
int count = rs.getInt(1); 
+1

他在測試和myAdmin工具中運行相同的查詢。所以改變查詢不應該有任何效果。順便說一下,count(item_id)也是正確的。 *和item_id之間的不同之處在於空值不會被計算在內。 – Natalia