0
的Java SQL錯誤
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)
我的代碼:與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