JDBC提供了应用程序与数据库之间的接口,不同数据库使用的驱动不同,由数据库开发方提供,使用时需要下载对应的驱动。
public class TestConnection {
//方式一
@Test
public void testConnection1() throws SQLException {
//设置连接信息
String url = "jdbc:mysql://localhost:3306/book";//jdbc:mysql:协议;localhost地址;3306端口号;book数据库名
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "admin");
//获取Driver的实现类对象
Driver driver = new com.mysql.jdbc.Driver();
//获取连接
Connection connection = driver.connect(url, info);
System.out.println(connection);
}
//方式二:使用反射获取Driver的实现类对象
@Test
public void testConnection2() throws Exception {
//设置连接信息
String url = "jdbc:mysql://localhost:3306/book";
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "admin");
//获取Driver的实现类对象
Class clz = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver)clz.getDeclaredConstructor().newInstance();
//获取连接
Connection connection = driver.connect(url, info);
System.out.println(connection);
}
//方式三:使用DriverManager方便对一系列Driver操作
@Test
public void testConnection3() throws Exception {
//设置连接信息
String url = "jdbc:mysql://localhost:3306/book";
String user = "root";
String password ="admin";
//获取Driver的实现类对象
Class clz = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver)clz.getDeclaredConstructor().newInstance();
//注册驱动
DriverManager.registerDriver(driver);
//获取连接
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);
}
//方式四:省略部分操作
@Test
public void testConnection4() throws Exception {
//设置连接信息
String url = "jdbc:mysql://localhost:3306/book";
String user = "root";
String password ="admin";
//获取Driver的实现类对象+注册驱动
Class.forName("com.mysql.jdbc.Driver");//类的静态方法中包含了创建类对象和注册驱动的操作
//获取连接
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);
}
//方式五:将连接信息放入到一个配置文件中,读取配置文件
@Test
public void testConnection5() throws Exception {
//获取连接信息
InputStream is = TestConnection.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties info = new Properties();//创建一个配置文件,写入连接信息
info.load(is);
String user = info.getProperty("user");
String password = info.getProperty("password");
String url = info.getProperty("url");
String driverClass = info.getProperty("driverClass");
//获取Driver的实现类对象+注册驱动
Class.forName(driverClass);
//获取连接
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);
}
}
方法五将配置文件和建立连接的类信息解耦,所以更推荐使用方法五。由于建立连接的操作经常会用到,所以有必要将其封装成一个JDBCUtils工具类下的getConnection方法,以方法五为例。
InputStream is = TestConnection.class.getClassLoader().getResourceAsStream("jdbc.properties");
这是上面那个版本获取配置信息输入流的操作,在获取配置信息时是从TestConnection类开始定位生成加载器,在封装是不宜再使用其他类的信息,因此可以修改一下。
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
封装完成的JDBCUtils工具类中getConnection方法如下:
public class JDBCUtils {
static public Connection getConnection() {
Connection connection = null;
try {
//获取连接信息
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
Properties info = new Properties();
info.load(is);
String user = info.getProperty("user");
String password = info.getProperty("password");
String url = info.getProperty("url");
String driverClass = info.getProperty("driverClass");
//获取Driver的实现类对象+注册驱动
Class.forName(driverClass);
//获取连接
connection = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
}
把jdbc.properties文件也放上来吧
user=root
password=admin
url=jdbc:mysql://localhost:3306/book
driverClass=com.mysql.jdbc.Driver
注意因为我们在获取配置信息时,使用的是系统类加载器,因此要把jdbc.properties放在当前类所处的src目录下。
运行下列程序
public static void main(String[] args) {
System.out.println(ClassLoader.getSystemClassLoader().getResource("jdbc.properties"));
System.out.println(JDBCUtils.class.getClassLoader().getResource("jdbc.properties"));
System.out.println(JDBCUtils.class.getResource("jdbc.properties"));
}
运行结果
file:/D:/Working/Eclipse/Work_Space/ConnectionTest/bin/jdbc.properties
file:/D:/Working/Eclipse/Work_Space/ConnectionTest/bin/jdbc.properties
file:/D:/Working/Eclipse/Work_Space/ConnectionTest/bin/com/jdbc/jdbc.properties