JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),
定义了用来访问数据库的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源
JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。
JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点
有过多的了解,从而大大简化和加快了开发过程。
JDBC驱动程序:各个数据库厂商根据JDBC的规范制作的 JDBC 实现类的类库
JDBC驱动程序总共有四种类型:
第一类:JDBC-ODBC桥。
第二类:部分本地API部分Java的驱动程序。
第三类:JDBC网络纯Java驱动程序。
第四类:本地协议的纯 Java 驱动程序。
第三、四两类都是纯Java的驱动程序,因此,对于Java开发者来说,它们在性能、可移植性、功能等方面都有优势
Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现
在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现
································code····································
package connect;
import com.mysql.jdbc.Driver;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Target;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
public class getConectionFormInterface {
/*
Driver 是一个接口: 数据库厂商必须提供的接口,能从其中获取数据库连接
*/
@Test
public void testDriver() throws SQLException {
//创建Driver实现类的对象
Driver driver = new Driver();
//准备连接数据库的基本信息:url,user,password
String url = "jdbc:mysql://localhost:3306/jdbc";
Properties properties = new Properties();
properties.put("user","root");
properties.put("password","root");
//调用Driver 接口的connect(url,info)获取数据库连接
Connection connect = driver.connect(url, properties);
System.out.println(connect);
}
/*
编写一个通用的方法,在不修改源程序的情况下,可以获取任何数据库的连接
解决方法:把数据库驱动Driver实现类的全类名,user,password放入一个配置文件中,通过修改配置文件的方式实现和具体实现类解耦
*/
public Connection getConnection() throws Exception {
//读取类路径下的jdbc.properties
InputStream resourceAsStream = getConectionFormInterface.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties properties1 = new Properties();
properties1.load(resourceAsStream);
String driverClass = properties1.getProperty("driver");
String user = properties1.getProperty("user");
String password = properties1.getProperty("password");
String jdbcUrl = properties1.getProperty("jdbcUrl");
java.sql.Driver driver = (java.sql.Driver) Class.forName(driverClass).newInstance();
Properties properties = new Properties();
properties.put("user",user);
properties.put("password",password);
Connection connect = driver.connect(jdbcUrl, properties);
return connect;
}
@Test
public void testConnection() throws Exception {
System.out.println(getConnection());
}
}