Testcase: testKlantVerwijderen(Main.ApplicationTest): Caused an ERROR
SQL-exception in zoekKlant - statementcom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from klant where naam = '2' and voornaam = 'test' and geboortedatum = '1998-08-1' at line 1
exception.DBException: SQL-exception in zoekKlant - statementcom.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from klant where naam = '2' and voornaam = 'test' and geboortedatum = '1998-08-1' at line 1
at database.KlantDB.zoekKlant(KlantDB.java:116)
at Main.Application.klantVerwijderen(Application.java:79)
at Main.ApplicationTest.testKlantVerwijderen(ApplicationTest.java:101)
Mein Code:Java SQL-Fehler mit PreparedStatement-
public Klant zoekKlant(Klant k) throws DBException {
Klant returnKlant = null;
// connectie tot stand brengen (en automatisch sluiten)
try (Connection conn = ConnectionManager.getConnection();) {
// preparedStatement opstellen (en automtisch sluiten)
try (PreparedStatement stmt = conn.prepareStatement(
"select * from klant from klant where naam = ? and voornaam = ? and geboortedatum = ? ");) {
stmt.setString(1, k.getNaam());
stmt.setString(2, k.getVoornaam());
stmt.setDate(3, Date.valueOf(k.getGeboorteDatum()));
stmt.execute();
// result opvragen (en automatisch sluiten)
try (ResultSet r = stmt.getResultSet()) {
if (r.next()) {
Klant klant = new Klant();
klant.setId(r.getInt("id"));
klant.setNaam(r.getString("naam"));
klant.setVoornaam(r.getString("voornaam"));
klant.setGeboorteDatum(r.getDate("geboortedatum").toLocalDate());
klant.setOpmerking(r.getString("opmerking"));
klant.setDebetstandLimiet(r.getBigDecimal("debetstand_limiet"));
if (r.getByte("actief") == 0)
{
klant.setActief(false);
}
else{
klant.setActief(true);
}
returnKlant = klant;
}
return returnKlant;
} catch (SQLException sqlEx) {
throw new DBException("SQL-exception in zoekKlant - resultset"+ sqlEx);
}
} catch (SQLException sqlEx) {
throw new DBException("SQL-exception in zoekKlant - statement"+ sqlEx);
}
} catch (SQLException sqlEx) {
throw new DBException(
"SQL-exception in zoekKlant - connection");
}
}
Meine Datenbank:
1 id int(11) Nee Geen AUTO_INCREMENT Veranderen Veranderen Verwijderen Verwijderen
Primaire sleutel Primaire sleutel
Unieke waarde Unieke waarde
Index Index
Ruimtelijk Ruimtelijk
Meer
2 naam varchar(64) latin1_swedish_ci Nee Geen Veranderen Veranderen Verwijderen Verwijderen
Primaire sleutel Primaire sleutel
Unieke waarde Unieke waarde
Index Index
Ruimtelijk Ruimtelijk
Meer
3 voornaam varchar(32) latin1_swedish_ci Nee Geen Veranderen Veranderen Verwijderen Verwijderen
Primaire sleutel Primaire sleutel
Unieke waarde Unieke waarde
Index Index
Ruimtelijk Ruimtelijk
Meer
4 geboortedatum date Nee Geen Veranderen Veranderen Verwijderen Verwijderen
Primaire sleutel Primaire sleutel
Unieke waarde Unieke waarde
Index Index
Ruimtelijk Ruimtelijk
Meer
5 opmerking text latin1_swedish_ci Ja NULL Veranderen Veranderen Verwijderen Verwijderen
Primaire sleutel Primaire sleutel
Unieke waarde Unieke waarde
Index Index
Ruimtelijk Ruimtelijk
Meer
6 debetstand_limiet double Nee Geen Veranderen Veranderen Verwijderen Verwijderen
Primaire sleutel Primaire sleutel
Unieke waarde Unieke waarde
Index Index
Ruimtelijk Ruimtelijk
Meer
7 actief tinyint(1) Nee Geen
Also im Grunde irgendwie ist es etwas falsch mit meiner PreparedStatement-. Ich verstehe nicht ganz, was aber? Es sollte richtig funktionieren, aber es ist nicht, was ziemlich seltsam ist. Ich möchte einfach alle Felder auswählen, die meiner Bedingung entsprechen, und ich bin mir ziemlich sicher, dass die Abfrage so aussehen sollte, aber aus irgendeinem Grund ist es nicht. Kann mir jemand sagen, was ich falsch mache? Würde sehr geschätzt werden :)
I "m ein Idiot, lol – user3117628
@ user3227070, betrachten die Annahme der Antwort, ob es geholfen. – Rahul