2017-08-07 2 views
0

Ich arbeite mit JDBC. In einer früheren jForm stelle ich den Benutzernamen des Benutzers, der gerade angemeldet ist, mit seinen Anmeldeinformationen ein und übergebe ihn an das Folgende.Getter-Methode gibt null zurück

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

private String getUser() { 
    return username; 
} 

Und dann habe ich es zu meiner SQL-Anweisung bin vorbei unter

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); 
} 

ich ein Null-Ergebnis erhalte, wenn diese Aussage läuft. Obwohl ich die gleiche Getter-Methode in einem jLabel verwendet habe und es hat gut funktioniert. Ich bin mir nicht sicher, warum ich null erhalte.

Dies ist, wo ich den Setter in der vorherigen jForm aufrufen.

+1

Sie sind nicht genug Kontext bereitstellt. Zeige mehr Code. –

+0

sieht aus wie Sie den Getter vor dem Setter aufrufen .... Post mehr Code ... –

+0

Nicht sicher, dass es Ihr Problem löst, aber Sie ersetzen sollte '(?)' Durch '?' – davidxxx

Antwort

0

Stellen Sie zuerst sicher, dass die Tabelle in der Datenbank Datensätze enthält.

Wenn es wahr ist, versuchen Sie, den String, der von der getUser() zurückgegeben wird, in eine String-Variable zu speichern.

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

Wenn dies nicht Training der Fall ist, versuchen Sie den Namen der Datenbank zunächst in der Abfrage Anbringen wie folgt aus:

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

@Ryan, hast du die obige Lösung versucht? –