jdbc中的createStatement方法

时间:2011-01-26 14:09:36

标签: java jdbc

我已经了解到Connection是一个接口,我们只能在接口中定义方法定义。   那么这是如何工作的:

...

Statement stmt = con.createStatement();

...

此方法如何创建Statement对象并将其返回?

2 个答案:

答案 0 :(得分:1)

因为在调用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语句,只要它们包含特定于DB服务器的SQL语言,而不是Java代码)。

答案 1 :(得分:0)

看看这个例子。 这个概念与此类似。

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接口方法,它调用con实际引用的方法。 所以你甚至不知道它会返回什么,加上stmt肯定会指向哪个类 继承了Statement接口。