Fordi begge klasser var til stede i din compiletime classpath, og din IDE prøvede at være hjælpsom.
Fordi prepareStatement()
er specificeret
for at returnere java.sql.PreparedStatement
, ikke com.mysql.jdbc.PreparedStatement
.
java.sql.PreparedStatement
er en grænseflade og du bør bruge dette hele tiden. MySQL-en er en konkret implementering, og du bør ikke være stramt at koble din JDBC-kode til den MySQL-specifikke implementering. Ellers ville du skulle lave en masse ændringer i din kode, hvis du nogensinde vil skifte DB-serveren (og dermed også JDBC-driveren) til en anden leverandør som PostgreSQL. Hvis du bruger standard JDBC-grænseflader fra java.sql
pakke hele tiden, alt hvad du behøver at ændre er kun JDBC URL'en og måske også brugernavnet og adgangskoden og nogle DB-specifikke SQL-sætninger.