метод createStatement в jdbc - PullRequest
       0

метод createStatement в jdbc

0 голосов
/ 26 января 2011

Я узнал, что Connection - это интерфейс, и мы можем определить только определение метода в интерфейсе. Итак, как это работает:

....

Оператор stmt = con.createStatement ();

....

Как этот метод создает объект Statement и возвращает его?

Ответы [ 2 ]

1 голос
/ 26 января 2011

Поскольку конкретная реализация интерфейса Connection возвращается при вызове getConnection().Интерфейс просто определяет сигнатуры метода.Конкретная реализация содержит реализации метода.

Connection connection = DriverManager.getConnection(url, username, password);
System.out.println(connection.getClass().getName()); // That's the name of the concrete implementation.

Это драйвер JDBC, который содержит эти конкретные реализации.JDBC API позволяет писать код Java независимо от конкретного используемого сервера базы данных.Всякий раз, когда вы переключаете БД, вам просто нужно переключить драйвер JDBC (и, возможно, также изменить операторы SQL, если они содержат специфический язык БД-сервера, но не код Java).

0 голосов
/ 08 августа 2012

Посмотрите на это, например. Концепция похожа на это, например.

public interface Human
{
public void run();
}

public class Man implements Human
{
public void run()
{
System.out.println("Man");
}
}

public class Main
{
public static void main(String s)
{
Human h= new Man();
h.run();
}
}

Выходные данные для этой программы будут Man.

Теперь сравниваем это с вашей проблемой.

Connection con = DriverManager.getConnection(url, username, password), con не указывает на объект подключения, потому что это интерфейс, он указывает на некоторый класс, который определенно унаследовал Connection интерфейс.

Теперь, когда вы делаете это

Statement stmt = con.createStatement();

Он не вызывает Connection метод интерфейса, он вызывает фактический ссылочный метод. Таким образом, вы даже не знаете, что он вернет, плюс stmt определенно укажет на класс, который унаследовал Statement интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...