Avatar billede Havtasken Nybegynder
29. november 2011 - 22:16 Der er 7 kommentarer og
1 løsning

PreparedStatement

Får en fejl ved følgende stykke kode:

public void addReservation(int a, int b, int c, int d, Date f, Date g, int h) {
        try {
            String q = "INSERT INTO reservation (CustID,RID,PriceID,Staff ID,CheckinDate,CheckoutDate,#weeks) VALUES (?, ?, ?, ?, ?, ?, ?)";
            PreparedStatement Stmt = db.prepareStatement(q);
           
            Stmt.setInt(1, a);
            Stmt.setInt(2, b);
            Stmt.setInt(3, c);
            Stmt.setInt(4, d);
            Stmt.setDate(5, f);
            Stmt.setDate(6, g);
            Stmt.setInt(7, h);
           
            Stmt.executeUpdate();

        }

        catch (SQLException e) {
            e.printStackTrace();
        }

    }


Fejlen er at den ikke ser de spørgsmålstegn, men hvorfor?

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3717)
    at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3701)
    at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3743)
    at com.mysql.jdbc.PreparedStatement.setInt(PreparedStatement.java:3687)
    at DbConnections.addReservation(DbConnections.java:197)
    at CottageGui$1.actionPerformed(CottageGui.java:95)
Avatar billede Slettet bruger
29. november 2011 - 22:54 #1
Har #weeks en speciel betydning i dit sql statement som jeg ikke er bekendt med?
Ser ud som om du har 8 kolonner før VALUES og 7 efter.
Avatar billede Havtasken Nybegynder
29. november 2011 - 22:57 #2
Der er 7 koloner, det er blot ,Staff ID, du nok ser som 2.
#weeks er blot til hvor mange uger reservationen er på, og har ingen specielt betydning nej.
Avatar billede Slettet bruger
29. november 2011 - 22:58 #3
Ud fra dette link ser det ud som om # kan bruges til at lave en kommentar, så alt efter dette tegn ignoreres:
http://dev.mysql.com/doc/refman/5.1/en/comments.html
Avatar billede Havtasken Nybegynder
29. november 2011 - 23:02 #4
ikke mig der har lavet databasen, men det kigger jeg da lige på :-)
Avatar billede Slettet bruger
29. november 2011 - 23:02 #5
Ja du har ret. Fik talt forkert.
Prøv eventuelt med [#weeks] i stedet for #weeks, men ved ikke om den stadig tolker det som alt efter # er en kommentar.
Og mon ikke du også skal skrive [Staff ID].
Avatar billede Havtasken Nybegynder
29. november 2011 - 23:07 #6
Du har helt ret, har lige testet det imens du skrev det her svar, det var #weeks der gjorde den ikke kom til ?, og så derefter staff id der havde mellemrum, det funker nu :)

Hvis du ligger et svar
Avatar billede Slettet bruger
29. november 2011 - 23:20 #7
Pointene må du godt beholde. :)
Avatar billede Havtasken Nybegynder
30. november 2011 - 15:53 #8
Som du ønsker, tak igen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester