2012-06-06 3 views
-1

В пакете java.sql у нас есть интерфейс Connection для установления соединения с базой данных.Объект интерфейса подключения JDBC

И с помощью класса DirverManager мы можем получить объект интерфейса Connection. Пример.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

Connection con=DriverManager.getConnection("jdbc:odbc:DNS"); 

Но у меня есть некоторое замешательство --- если Connection является интерфейсом, то как мы можем получить объект интерфейса подключения?

Пожалуйста, очистите эту путаницу.

ответ

2

Мы не можем создать объект для какого-либо интерфейса. Но можно назначить объект класса, который реализует этот интерфейс для ссылочной переменной этого интерфейса. Здесь con является ссылочной переменной для этого интерфейса и DriverManager.getConnection() возвращает объект класса, который реализует интерфейс Connection. T4CConnection класса

+0

Но я хочу знать, что DirverManager.getConnection() возвращает объект класса. (Означает, что класс реализует интерфейс Connection). – ajava

+1

Теперь класс, который реализует _Connection_, является специфичным для водителя. Драйвер JDBC, который вы используете, имеет связанный с ним файл .jar, а классы, определенные в нем, реализуют эти интерфейсы. Каждое из этих операторов возвращает объект. Вы видите, что ничего не инициализируется обычным способом класса-объекта с помощью _new object() _. –

1

Oracle, реализует интерфейс Connection и JDBC4Connection класса MYSQL также реализует интерфейс Connection.

Это означает, что ваш con ссылочной переменной в строке ниже выполняется либо T4CConnection класса OBJ при загрузке Oracle драйвера или JDBC4Connection класса OBJ, если вы загружаете MySQL драйвер.

Connection con=DriverManager.getConnection("jdbc:odbc:DNS");

0

В J2EE, мы закодировать с интерфейсами, а не классов, как от поставщика к поставщику и драйвера к драйверу изменение названия класса. Чтобы получить имя класса реализации, используйте getClass().

Смежные вопросы