2017-08-07 117 views
0

我正在使用JDBC。在之前的jForm中,我將設置當前使用其憑據登錄的用戶的用戶名,並將其傳遞給下面的以下內容。Getter方法返回null

public void setUser(String user) { 
    this.username = user; 
} 

private String getUser() { 
    return username; 
} 

然後我將它傳遞給我的sql語句下面

PreparedStatement st; 
ResultSet rs; 
Connection conn; 
try { 
    String query = "SELECT * FROM PAYMENTS WHERE USERNAME = (?)"; 
    conn = mq.getConnection(); 
    st = conn.prepareStatement(query); 
    st.setString(1, getUser()); 
    rs = st.executeQuery(); 
} catch (SQLException ex) { 
    Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex); 
} 

運行語句時我收到一個空的結果。雖然我在jLabel中使用了同樣的getter方法,但它工作正常。我不知道爲什麼我收到null。

if (rs.next()) { 
      mv.setVisible(true); 
      mv.setUser(jTextField1.getText()); 
      this.dispose(); 
     } else { 

這就是我在之前的jForm中調用setter的地方。

+1

你沒有提供足夠的上下文。顯示更多代碼。 –

+0

看起來像你在setter之前調用getter ....發表更多代碼... –

+0

不確定它是否解決了你的問題,但是你應該用'?'替換'(?)' – davidxxx

回答

0

首先,確保數據庫中的表確實包含記錄。

如果它是true,那麼嘗試將從getUser()返回的String存儲到String變量中。

String user = getUser(); 
st.setString(1, user); 

如果不鍛鍊,嘗試在查詢第一附加數據庫的名稱,如:

String query = "SELECT * FROM DATABASE_NAME.PAYMENTS WHERE USERNAME = (?)"; 
+0

@Ryan,你是否嘗試過上述解決方案? –