Omdat beide klassen aanwezig waren in je compiletime classpath en je IDE probeerde behulpzaam te zijn.
Omdat prepareStatement()
is gespecificeerd
om java.sql.PreparedStatement
te retourneren , niet com.mysql.jdbc.PreparedStatement
.
De java.sql.PreparedStatement
is een interface en je zou dit de hele tijd moeten gebruiken. De MySQL-versie is een concrete implementatie en u moet uw JDBC-code niet strak koppelen aan de MySQL-specifieke implementatie. Anders zou je veel wijzigingen in je code moeten aanbrengen als je ooit de DB-server (en dus ook de JDBC-driver) naar een andere leverancier zoals PostgreSQL wilt overschakelen. Als u de standaard JDBC-interfaces van java.sql
. gebruikt pakket, hoeft u alleen de JDBC-URL te wijzigen en misschien ook de gebruikersnaam en het wachtwoord en enkele DB-specifieke SQL-instructies.
Zie ook:
- Wanneer moet ik een interface gebruiken in java?
- In de eenvoudigste bewoordingen, wat is een fabriek ?