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)
Мой код:ошибки Java SQL с 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");
}
}
Моя база данных:
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
Так в основном почему-то есть что-то не так с моей PreparedStatement. Я не совсем понимаю, что? Он должен работать правильно, но это не так, что довольно странно. Я просто хочу выбрать все поля, соответствующие моему условию, и я уверен, что это то, что должен выглядеть запрос, но по какой-то причине это не так. Может ли кто-нибудь сказать мне, что я делаю неправильно? Было бы очень выгодно :)
Я "м идиот, лол – user3117628
@ user3227070, рассмотреть вопрос о принятии ответа, если это помогло. – Rahul