我们也听说过Java的面向接口编程,即官方提供一系列接口给第三方去实现,然后利用接口去调用第三方的实现类,如果有多个第三方都实现了该接口,那么对于官方来说,都可以利用该接口调用这些第三方的实现类,且不关心第三方是如何具体实现的,我只管调用就行了。
JDBC正是利用了接口编程思想,JDBC只是接口,JDBC驱动才是该接口的实现类,每个数据库都有其对应的JDBC驱动,没有JDBC驱动是没有办法连接数据库的!
JDBC接口核心的API
Driver接口
每个驱动程序必须实现的接口,每个驱动程序都应该提供一个实现 Driver 接口的类。 它有一个很重要的方法:
Connection connect(String url,Properties info) throws SQLException
此方法是连接数据库的方法,并返回一个与数据库已连接的连接对象;参数url表示连接数据库的地址,其写法:jdbc协议:数据库子协议://主机:端口/数据库,如MySql的数据库连接地址可以写成:
url:jdbc:mysql://localhost:3306/test
info封装了连接数据库的用户名和密码。也就是说该方法是Java与数据库连接的桥梁。
DriverManager类
顾名思义,这是数据库驱动的管理类,负责管理所有注册的驱动程序,主要有如下方法:
static void registerDriver(Driver driver);// 这是注册驱动的方法
static Connection getConnection(String url, String user, String password);// 获取连接对象
此方法内部调用了驱动程序实现了Driver接口的Connection connect(String url,Properties info)方法,从而获得连接对象。
Connection接口
表示java连接数据库的对象,并可执行sql语句并返回结果,其主要方法:
Statement createStatement();// 创建Statement对象
PreparedStatement prepareStatement(String sql);// 创建PreparedStatement对象
第二个方法用得最多,因为它可以预编译sql语句,这大大节省了数据库的开销。
而PreparedStatement接口的主要方法如下:
int executeUpdate(); // 执行预编译的更新sql语句(DDL,DML)
ResultSet executeQuery();// 执行预编译的查询sql语句(DQL)