2016-05-05 10 views
0

Ich habe versucht, mein Programm zu programmieren, die bestehen, um einen Benutzer über ein Login-System mit SQL dann verbinden, wenn die identifiants gut sind, wird der Benutzer zu einem anderen umgeleitet Rahmen.Getting "java.sql.SQLException: Werte nicht an Anweisung gebunden" Ausnahme

Aber ich hatte ein Problem, ich möchte einige Informationen in der SQL-Basis haben, also habe ich versucht, while-Schleife und die Anweisungen zu verwenden, war es gut, aber ich wollte mehr, also habe ich mehr während Codes hinzufügen, um weitere Informationen erhalten, aber ich habe einen Fehler:

java.sql.SQLException: Werte nicht

Siehe den folgenden Code-Anweisung gebunden:

String pseudo2 = null; 
    String rank2 = null; 

    try { 

     String searchname2 = "select * from AdminsInfos where pseudo=?"; 
     PreparedStatement name2 = connection.prepareStatement(searchname2); 



     ResultSet rspseudo2 = name2.executeQuery();; 

     while (rspseudo2.next()) 
     { 

      pseudo2 = rspseudo2.getString("Pseudo"); 
      rank2 = rspseudo2.getString("Rank"); 

     } 

    } catch (Exception e2) { 

     e2.printStackTrace(); 

    } 

    JOptionPane.showMessageDialog(null, "Username and password are correct, connection Admin !"); 

    frame.setVisible(false); 
    new LoginMain().setVisible(true); 

    LoginMain.usernameField.setText(pseudo2); 
    LoginMain.ranklabel.setText("Rank : " + rank2); 

und Sie können die SQL-Basis auch durch das folgende Bild überprüfen:

sql base

Kann jemand hilft mir?

+0

Sie haben einen '?' Platzhalter in Ihrer SQL-Anweisung. Sie muss vor 'executeQuery' mit einer' PreparedStatement'-Methode wie 'setString',' setInt' oder ähnlich, abhängig vom Datentyp, gesetzt werden. – rgettman

Antwort

0

Da Sie eine gebundene Variable haben, müssen Sie den Wert vor dem Ausführen der Anweisung festlegen.

zum Beispiel, wenn psuedo vom Typ String ist, dann werden Sie etwas wie unten tun.

String searchname2 = "select * from AdminsInfos where pseudo=?"; 
    PreparedStatement name2 = connection.prepareStatement(searchname2); 
    name2.setString(1,"value"); 

    ResultSet rspseudo2 = name2.executeQuery(); 

wo erster Parameter in den setString bedeutet, dass Sie den ersten Wert für die gebundene Variable gesetzt werden sollen.

+0

Nun, das Pseudo ist genau Null am Anfang, und nachdem es von meinem SQL –

+0

OOOH I SEE! Der Wert kann null sein und nachdem es von der SQL mit einem Satz oder ähnlichem korrigiert wird? –

+0

Nein, es wird nicht. Wenn der Wert null ist, sucht die Abfrage nach Zeilen, in denen der Wert für die Spalte "psuedo" die Zeichenfolge "null" ist. Um dieses Problem zu vermeiden, müssen Sie so etwas tun. http://stackoverflow.com/questions/4215135/how-to-deal-with-maybe-null-values-in-a-preparedstatement –

Verwandte Themen