方式一
@Test public void testConnection1() throws SQLException { // 获取Driver实现类对象 Driver driver = new com.mysql.cj.jdbc.Driver(); // jdbc:mysql协议 // localhost:ip地址 // 3306:默认的mysql的端口号 // school:数据库 String url = "jdbc:mysql://localhost:3306/school"; // 将用户名和密码封装在Properties中 Properties info = new Properties(); info.setProperty("user", "root"); info.setProperty("password", "xxx"); Connection connection = driver.connect(url, info); System.out.println(connection); }
方式二
/* * 是程序更具有可移植性 利用反射 */ @Test public void testConnection2() throws Exception { // 获取Driver实现类对象 Class clazz = Class.forName("com.mysql.jdbc.Driver"); // newInstance需要拥有空参构造器 Driver driver = (Driver) clazz.newInstance(); // 提供要连接的数据库 String url = "jdbc:mysql://localhost:3306/school"; // 提供连接需要的用户名和密码 Properties properties = new Properties(); properties.setProperty("user", "root"); properties.setProperty("password", "xxx"); // 获取连接 Connection connect = driver.connect(url, properties); System.out.println(connect); }
方式二在方式一的基础上进行了迭代,利用反射来避免第三方API的出现,使程序更具有移植性。
方式三
// 方式三使用DriverManager来代替Driver @Test public void testConnection3() throws Exception { // 获取Driver实现类对象 Class clazz = Class.forName("com.mysql.cj.jdbc.Driver"); Driver driver = (Driver) clazz.newInstance(); // 提供另外三个连接的基本信息 String url = "jdbc:mysql://localhost:3306/school"; String user = "root"; String password = "xxx"; // 注册驱动 DriverManager.registerDriver(driver); // 获取连接 Connection connection = DriverManager .getConnection(url, user, password); System.out.println(connection); }
方式四
// 方式四只用加载驱动不用显示的注册驱动 @Test public void testConection4() throws Exception{ // 加载Driver Class.forName("com.mysql.cj.jdbc.Driver"); // 提供另外三个连接的基本信息 String url = "jdbc:mysql://localhost:3306/school"; String user = "root"; String password = "xxx"; //省略如下操作, /*// 注册驱动 DriverManager.registerDriver(driver);*/ // 获取连接 Connection connection = DriverManager .getConnection(url, user, password); System.out.println(connection); }
可能大家会有这样的疑问,为什么这里不需要注册驱动,我们可以从Driver类的源码得知答案
static { try { DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } }
在Driver类加载的过程中,已经帮我们进行了驱动的注册!
方式五:最终版本
将连接所需要的信息写入properties文件中
例如:jdbc.preperties
user=root
password=xxx
url=jdbc:mysql://localhost:3306/school
driverClass=com.mysql.cj.jdbc.Driver
//实现数据和代码的分离。实现了解耦 //方式五:将数据库需要的四个基本信息声明在配置文件中,通过读取配置文件获取连接 @Test public void testConection5() throws Exception{ //读取配置文件的基本信息 InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties properties = new Properties(); properties.load(is); String user = properties.getProperty("user"); String password = properties.getProperty("password"); String url = properties.getProperty("url"); String driverClass = properties.getProperty("driverClass"); //加载驱动 Class.forName(driverClass); //获取连接 Connection connection = DriverManager.getConnection(url, user, password); System.out.println(connection); }