获取数据库连接
2.1要素一:Driver接口的实现类
2.1.1Driver接口介绍
- java.sql.Driver接口是所有JDBC驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现,也就是说要调用jdbc的jar,必须需要实现driver接口
 
- 在程序中不需要直接去访问实现了Driver接口的类,而是由驱动程序管理类(java.sql.DriverManager)去调用这些Driver实现
  1.Oracle的驱动:oracle.jdbc.driver.OracleDriver
  2.mySql的驱动:com.mysql.jdbc.Driver 
将jdbc的jar包导入工程

注意:如果是Dynamic Web Project(动态的web项目),则是把驱动jar放到WEB目录下的WEB-INF目录下中lib目录中即可

2.1.2加载与注册JDBC驱动
- 加载驱动:加载jdbc驱动(jdbc的jar包)需要调用Class类的静态forName(),向其传递要加载的JDBC驱动的类名
  class.forName(“com.mysql.jdbc.Driver”) 
- 注册驱动:DriverManager类是驱动程序类,负责管理驱动程序
  1.使用DriverManager.registerDriver(com.mysql.jdbc.Driver)来注册驱动
  2.通常不用显示调用DriverManager类的registerDriver()方法来注册驱动程序类的实例,因为Driver接口的驱动程序类都包含了静态代码块中,会调用DriverManager.registerDriver()方法来注册自身的一个实例 
2.2要素二:URL
JDBC URL用于标识一个被注册的驱动程序,驱动程序管理器通过这个URL选择正确的驱动程序,从而建立到数据库的连接
JDBC URL的标准由三部分组成,各部分间用冒号分隔
- jdbc:子协议:子名称
 
- 协议:JDBC URL中的协议总是jdbc
 
- 子协议:子协议用于标识一个数据库或驱动程序
 
- 子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库,提供足够的信息,包含主机名(对应服务端的ip地址),端口号,数据库名
 
- 举例:
  
 
2.3要素三:用户名和密码
- user,password可以用”属性名=属性值”方式告诉数据库
 
- 可以调用DriverManager类的getConnection()方法建立到数据库的连接
 
2.4数据库连接方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
   | import org.junit.Test;
  import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties;
  public class testConnection1 {
           @Test     public  void  getconnection5() throws IOException, ClassNotFoundException, SQLException {                   InputStream is =testConnection1.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 conn = DriverManager.getConnection(url,user,password);         System.out.println(conn);     } }
 
 
   | 
 
其中对第三步的加载驱动的说明,Driver.class在背后做了手脚
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
   |  Class.forName(driverClass);
 
  Driver driver = (Driver) clazz.newInstance();
  DriverManager.registerDriver(driver)     
 
 
      
 
 
 
  package com.mysql.cj.jdbc;
  import java.sql.DriverManager; import java.sql.SQLException;
  public class Driver extends NonRegisteringDriver implements java.sql.Driver {     public Driver() throws SQLException {     }
      static {         try {             DriverManager.registerDriver(new Driver());         } catch (SQLException var1) {             throw new RuntimeException("Can't register driver!");         }     } }
 
  | 
 
其中,配置文件声明在工程的src目录下:【jdbc.properties】
1 2 3 4
   | user=root password=admin url=jdbc:mysql://localhost:3306/test driverClass=com.mysql.jdbc.Driver//指明驱动类型
   | 
 
说明:使用配置文件的方式保存配置信息,在代码中加载配置文件
使用配置文件的好处
- 实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码
 
- 如果修改了配置信息,省去重新编译的过程
 
2.5补充:加载properties文件的两种方式
1 2 3 4 5 6 7 8 9 10 11
   |  Properties properties=new Properties();  
  1、获取class目录下的配置文件  InputStream is = classLoader.getResourceAsStream("re.properties");  properties.load(is);     2、 properties.load(new FileInputStream("src\\re.properties"));
 
  |