2017-08-07 118 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,你是否尝试过上述解决方案? –