Ponieważ obie klasy były obecne w Twojej ścieżce klas w czasie kompilacji, a Twoje IDE próbowało być pomocne.
Ponieważ prepareStatement()
to określone
aby zwrócić java.sql.PreparedStatement
, a nie com.mysql.jdbc.PreparedStatement
.
java.sql.PreparedStatement
to interfejs i powinieneś używać tego przez cały czas. MySQL to konkretna implementacja i nie powinieneś ściśle łączyć swojego kodu JDBC z implementacją specyficzną dla MySQL. W przeciwnym razie będziesz musiał dokonać wielu zmian w swoim kodzie, jeśli kiedykolwiek będziesz chciał przełączyć serwer DB (a tym samym także sterownik JDBC) na innego dostawcę, takiego jak PostgreSQL. Jeśli używasz standardowych interfejsów JDBC z java.sql
cały czas pakiet, wszystko, co musisz zmienić, to tylko adres URL JDBC, a może także nazwa użytkownika i hasło oraz niektóre instrukcje SQL specyficzne dla bazy danych.