Java---Jdbc(Java DataBase Connectivity)--Mysql数据库--JDBC获取数据库连接
一、获取数据库连接
获取数据库连接要有三个要素。分别为Driver接口,URL,用户名和密码
要素一:Driver接口
- 
java.sql.Driver接口是由数据库厂家提供的,是所有的Jdbc驱动程序要去实现的接口。不同的数据库厂商提供了不同的实现。 
- 
Mysql数据库的Driver接口为:com.mysql.cj.jdbc.Driver 
- 
在获取数据库连接之前要将每个数据库厂商提供jar包导入到要开始的项目中(以IDEA为例) 1.在模块jdbc的src下建立lib包,该文件只用来存放jar包(如下图). 
 ![]() 2.将与数据库版本相对应的jar包复制在lib包下(如下图). 
 ![]() 3.导入数据库的jar,在驱动jar点击右键-->Add as Library-->在Level框中选择Module Library-->点击OK,如果在jar包前出现了一个箭头,则表示导入成功(如下图). 
 ![]() 
 ![]() 
 ![]() 
要素二:URL
- 
JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。 
- 
比如常见的URL:jdbc:mysql://localhost:3306/test  jdbc为协议名,mysql为子协议,localhost为主机名(即为服务端的ip地址),3306为对应的数据库的端口号,test为要连接的数据库名. 
要素三:用户名与密码
- 用户名指的是数据库的user,密码指的是数据库的password
几种获取数据库连接的方式
- 
方式一 public void getConnection1() throws SQLException{ //1.提供java.sql.Driver接口实现类对象 Driver driver = new com.mysql.cj.jdbc.Driver(); //2.提供url,指明具体的操作 String url = "jdbc:mysql://localhost:3306/test"; //3.提供Properties对象,指明具体的用户名和密码 Properties pro = new Properties(); pro.setProperty("user" , "root"); pro.setProperty("password" , "123456"); //4.driver调用connect,获取连接 Connection con = driver.connect(url , pro); System.out.println(con); }说明:输出的结果为:com.mysql.cj.jdbc.ConnectionImpl@448ff1a8,则表示数据库获取连接成功;但这种方式出现了第三方数据库的api 
- 
方式二:对方式一进行改进,不引入第三方数据库的api public void getConnection2() throws Exception{ //1.实例化Driver Class clazz = Class.forName("com.mysql.cj.jdbc.Driver"); Driver driver = (Driver) clazz.newInstance(); //2.提供url,指明具体的操作 String url = "jdbc:mysql://localhost:3306/test"; //3.提供Properties对象,指明具体的用户名和密码 Properties pro = new Properties(); pro.setProperty("user" , "root"); pro.setProperty("password" , "123456"); //4.driver调用connect,获取连接 Connection con = driver.connect(url , pro); System.out.println(con); }说明:输出的结果为:com.mysql.cj.jdbc.ConnectionImpl@448ff1a8,则表示数据库获取连接成功;该方式使用的反射实例化Driver 
- 
方式三 public void getConnection3() throws Exception{ //1.实例化Driver Class clazz = Class.forName("com.mysql.cj.jdbc.Driver"); Driver driver = (Driver) clazz.newInstance(); //2.提供连接所需要的基本信息 String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; //3.注册驱动 DriverManager.registerDriver(driver); //4.获取连接 Connection con = DriverManager.getConnection(url , user , password); System.out.println(con); }说明:输出的结果为:com.mysql.cj.jdbc.ConnectionImpl@448ff1a8,则表示数据库获取连接成功;该发生使用DriverManager实现数据库的连接 
- 
方式四 public void getConnection4() throws Exception{ //1.提供连接所需要的基本信息 String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; //2.获取Driver实现类对象 Class.forName("com.mysql.cj.jdbc.Driver"); //3.获取连接 Connection con = DriverManager.getConnection(url , user , password); System.out.println(con); }说明:输出的结果为:com.mysql.cj.jdbc.ConnectionImpl@448ff1a8,则表示数据库获取连接成功;方式四为对方式三的改进,将 Driver driver = (Driver) clazz.newInstance();DriverManager.registerDriver(driver);给删除了,原因是(如下): //Mysql的Driver类中有下面的代码块 static { try { DriverManager.registerDriver(new Driver()); } catch (SQLException var1) { throw new RuntimeException("Can't register driver!"); } }
- 
方式五:使用配置文件来保存连接数据库时的基本信息(最常用的获取数据库连接的方式) 使用配置文件的好处有:①实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码②如果修改了配置信息,省去重新编译的过程。 ①.配置文件建立在src目录下jdbc.properties(如下图) 

②.编写jdbc.properties配置文件

③.编写获取数据库连接的代码
public void getConnection5() throws Exception{
	//1.加载配置文件,JdbcConnection表示getConnection5()方法在JdbcConnection下
   InputStream is = 			           JdbcConnection.class.getClassLoader().getResourceAsStream("jdbc.properties");
    Properties pro = new Properties();
    pro.load(is);
    //2.读取配置信息
    String user = pro.getProperty("user");
    String password = pro.getProperty("password");
    String url = pro.getProperty("url");
    String driver = pro.getProperty("driverClass");
    //3.加载驱动
    Class.forName(driver);
    //4.获取连接
    Connection con = DriverManager.getConnection(url , user , password);
    
    System.out.println(con);
}
说明:输出的结果为:com.mysql.cj.jdbc.ConnectionImpl@448ff1a8,则表示数据库获取连接成功
 
                    
                     
                    
                 
                    
                
 





 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号