2015-06-18 66 views
1

我試圖獲取在表中找到用戶名的次數,事情是我每次只得到一個「1」的值,即使找不到用戶名(值應該爲0),我認爲問題在於我正在使用rsMetaData.getColumnCount();,那只是計算找到的列數,而不是列中顯示的時間量?獲取計數列值(MySQL/Java)

這是以防萬一的詢問有什麼不對的吧:

ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM user_names WHERE name like '%"+givenName+"%'"); 
+0

您是否閱讀過https://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html? –

+0

使用'SELECT COUNT(*)作爲total',然後得到'total'的值,因爲count總是返回1行。 –

回答

2

rsMetaData.getColumnCount();

正如方法說,這將返回它在你的查詢是1列數(計一列)。

要獲得所需的數據,只需在計數上指定一個名稱即可獲取結果。

爲此添加所需的名稱

ResultSet rs = st.executeQuery("SELECT COUNT(*) as totalCount FROM user_names WHERE name like '%"+givenName+"%'");

,然後使用從返回

rs.getInt("totalCount");

1

你是對的,rsMetaData.getColumnCount();只會讓你列數獲取結果該查詢當然總是1.您應該做的是rs.getInt(0)以獲取第一列(索引爲0的列)的內容爲一個整數