Mysql Exception

  • hallo, ich versuche grade mit java eine verbindung zu einer Mysql Datenbank aufzubauen aber ich bekomme den fehler:
    java.sql.SQLException: Parameter index out of range( 1 > number of parameters, which is 0):


    eigentlich sollte der code richtig sein und ich weiß nicht wo das problem ist =( ... hoffe mir kann jemand helfen.


    hier mal mein code:



  • Ich weiß jetzt nicht wieso du den Fehler bekommst, aber das kann ja auch nicht passen:

    Code
    1. String updateSql = "UPDATE SPIELER " +
    2. "SET POINTS = 1" +
    3. "WHERE PLAYER = '?'";


    Würde ja sowas wie...

    SQL
    1. UPDATE SPIELER SET POINTS = 1WHERE PLAYER = '?'

    ergeben.


    Da fehlt also ein Leerzeichen.


    E: Und: Musst du gar keine Tabelle angeben?

  • Der Fehler sagt aus, dass du irgentwo einen Parameter vergessen hast.


    Wenn man noch die Zeile des Fehlers wüsste ... könnte man auch noch die genaue Ursache rausfinden.

  • also ich habe nun mal dieses leerzeichen gemacht, aber der fehler wurde nicht behoben ... Die Tabelle ist "SPIELER" und "POINTS" ist die spalte die geändert werden soll. "PLAYER" ist die spalte, nach dem gesucht wird


    zeile wird leider nicht angezeigt =( ... hab mal ein screen angehängt


    ps: nicht wundern ist ein plugin für ein minecraft server ;p


  • Code
    1. // Zweites Fragezeichen durch "lastName" Parameter ersetzen
    2. preparedUpdateStatement.setString(1, Player);


    du hast nur ein ?
    also sollte es setstring(0,..) sein
    codenachbesserungen können schnell schief gehen ;)

  • Das dachte ich auch erst. Aber in der JDBC Doku ist es genauso angegeben (?):
    http://docs.oracle.com/javase/…jdbc/basics/prepared.html


    Edit: Lass mal die Single-Quotes um das ? weg. Prepared Statements regeln das eigenständig.

  • also wenn ich setString(0 eingeben steht beim fehler out of range 0>1 ... und wenn ich das '?' weglasse kommt der fehler immernoch =( ...verstehe das nicht



    Edit: Oh man xD... habe den fehler nun gefunden. das fragezeichen muss in klammern stehen ;p .. als (?) anstatt '?'

  • Da muss ein einfaches ? stehen. Ohne () ohne ' '


    Bsp.:

    Code
    1. ps = connection.prepareStatement("SELECT a,b,c FROM mytable WHERE category = ?");
    2. ps.setString(1, "kuhkuh");