1. package com.hspedu.jdbc;
    2. import com.mysql.jdbc.Driver;
    3. import org.junit.jupiter.api.Test;
    4. import java.io.FileInputStream;
    5. import java.io.FileNotFoundException;
    6. import java.io.IOException;
    7. import java.sql.Connection;
    8. import java.sql.DriverManager;
    9. import java.sql.SQLException;
    10. import java.util.Properties;
    11. /**
    12. * @author 韩顺平
    13. * @version 1.0
    14. * 分析java 连接mysql的5中方式
    15. */
    16. public class JdbcConn {
    17. //方式1
    18. @Test
    19. public void connect01() throws SQLException {
    20. Driver driver = new Driver(); //创建driver对象
    21. String url = "jdbc:mysql://localhost:3306/hsp_db02";
    22. //将 用户名和密码放入到Properties 对象
    23. Properties properties = new Properties();
    24. //说明 user 和 password 是规定好,后面的值根据实际情况写
    25. properties.setProperty("user", "root");// 用户
    26. properties.setProperty("password", "hsp"); //密码
    27. Connection connect = driver.connect(url, properties);
    28. System.out.println(connect);
    29. }
    30. //方式2
    31. @Test
    32. public void connect02() throws ClassNotFoundException,
    33. IllegalAccessException, InstantiationException, SQLException {
    34. //使用反射加载Driver类 , 动态加载,更加的灵活,减少依赖性
    35. Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
    36. Driver driver = (Driver)aClass.newInstance();
    37. String url = "jdbc:mysql://localhost:3306/hsp_db02";
    38. //将 用户名和密码放入到Properties 对象
    39. Properties properties = new Properties();
    40. //说明 user 和 password 是规定好,后面的值根据实际情况写
    41. properties.setProperty("user", "root");// 用户
    42. properties.setProperty("password", "hsp"); //密码
    43. Connection connect = driver.connect(url, properties);
    44. System.out.println("方式2=" + connect);
    45. }
    46. //方式3 使用DriverManager 替代 driver 进行统一管理
    47. @Test
    48. public void connect03() throws IllegalAccessException,
    49. InstantiationException, ClassNotFoundException, SQLException {
    50. //使用反射加载Driver
    51. Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
    52. Driver driver = (Driver) aClass.newInstance();
    53. //创建url 和 user 和 password
    54. String url = "jdbc:mysql://localhost:3306/hsp_db02";
    55. String user = "root";
    56. String password = "hsp";
    57. DriverManager.registerDriver(driver);//注册Driver驱动
    58. Connection connection = DriverManager.getConnection(url, user, password);
    59. System.out.println("第三种方式=" + connection);
    60. }
    61. //方式4: 使用Class.forName 自动完成注册驱动,简化代码
    62. //这种方式获取连接是使用的最多,推荐使用
    63. @Test
    64. public void connect04() throws ClassNotFoundException, SQLException {
    65. //使用反射加载了 Driver类
    66. //在加载 Driver类时,完成注册
    67. /*
    68. 源码: 1. 静态代码块,在类加载时,会执行一次.
    69. 2. DriverManager.registerDriver(new Driver());
    70. 3. 因此注册driver的工作已经完成
    71. static {
    72. try {
    73. DriverManager.registerDriver(new Driver());
    74. } catch (SQLException var1) {
    75. throw new RuntimeException("Can't register driver!");
    76. }
    77. }
    78. */
    79. Class.forName("com.mysql.jdbc.Driver");
    80. //创建url 和 user 和 password
    81. String url = "jdbc:mysql://localhost:3306/hsp_db02";
    82. String user = "root";
    83. String password = "hsp";
    84. Connection connection = DriverManager.getConnection(url, user, password);
    85. System.out.println("第4种方式~ " + connection);
    86. }
    87. //方式5 , 在方式4的基础上改进,增加配置文件,让连接mysql更加灵活
    88. @Test
    89. public void connect05() throws IOException, ClassNotFoundException, SQLException {
    90. //通过Properties对象获取配置文件的信息
    91. Properties properties = new Properties();
    92. properties.load(new FileInputStream("src\\mysql.properties"));
    93. //获取相关的值
    94. String user = properties.getProperty("user");
    95. String password = properties.getProperty("password");
    96. String driver = properties.getProperty("driver");
    97. String url = properties.getProperty("url");
    98. Class.forName(driver);//建议写上
    99. Connection connection = DriverManager.getConnection(url, user, password);
    100. System.out.println("方式5 " + connection);
    101. }
    102. }