获取数据库连接的方式一
- 我们要通过java.sql.Driver接口来获取数据库连接
MySQL的驱动: com.mysql.jdbc.Driver
如何建立与数据库的连接(方式一:)
-
创建驱动类的对象赋值给java.sql.Driver类的引用(在方式一种加载驱动我们是使用创建驱动类的对象的方式)
- com.mysql.jdbc.Driver类实现了java.sql.Driver接口
- 我们在创建一个类的对象的时候就会先将这个类加载到内存中来
-
使用驱动类的对象调用其类中的connect(String url,Properties info)方法来获取与指定数据库的连接,这里我们可以发现要提供一个String类型的对象和一个Properties类型的对象
- String类型的url就是要定位一个JDBC驱动程序,然后通过这个JDBC驱动程序去建立与特定数据库的连接
- Properties类的对象中要提供数据库的账号和密码
JDBC URL用于标识一个被注册的驱动程序,驱动程序管理器通过与这个URL选择正确的驱动程序,从而建立与特定数据库的连接
com.mysql.jdbc.Driver类中的connect()中的第二个Properties类的对象的作用:
将数据库的用户名和密码封装在Properties类的对象中,我们要通过调用Properties类的setProperty()方法来将用户名和密码封装到这个Properties类的对象中
- 注意: 我们使用setProperty()方法在设置用户名时,传入的第一个参数对象必须是字符串类型的"user",如果在使用setProperty()方法设置密码时,传入的第一个参数对象必须是字符串类型的"password"
- 因为在程序运行的使用,对于我们的connect()方法来讲,我们会对其中的Properties类的存储的数据进行提取,我们要提取出相应的用户名和密码,这个时候在connect()方法中提取用户名的时候我们通过名为user的键去查找用户名,用名为password的键去找密码
- Properties利用String类型的键值对来对数据进行存储
JDBC URL的标准由三个部分组成,各个部分之间用冒号分隔
jdbc : mysql: //localhost:3306/test
主协议 子协议 子名称
localhost : IP地址
3306: 默认的MySQL软件的端口号
test: 具体的一个数据库(DB)
在MySQL8.0之后连接MySQL还要指定时区:在原本的基础上还要加上?serverTimezone=Asia/Shanghai
具体实际操作如下:
package jdbc.获取数据库连接的方式一;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.Properties;
public class ConnectionTest1 {
public static void main(String[] args) throws SQLException {
/*
加载数据库驱动, 这里我们就是通过创建驱动类的对象从而实现了加载驱动类的操作(我们在创建一个类的对象的时候,肯定会先加载这个类到内存中)
我们这里是创建了一个子类的对象(com.mysql.jdbc.Driver类的对象)赋给了父类(java.sql.Driver类)的引用
*/
Driver driver = new com.mysql.cj.jdbc.Driver();
//创建一个String类型的url,通过这个URL程序就会选择正确的驱动程序,从而建立与特定数据库的连接
String url = "jdbc:mysql://127.0.0.1:3306/school?serverTimezone=Asia/Shanghai";
/*
这里我们提供一个Properties类的对象,在这个对象中我们要封装数据库的用户名和密码
*/
Properties info = new Properties();
info.setProperty("user","root");
info.setProperty("password","mysql");
/*
调用使用多态的方式调用com.mysql.cj.jdbc.Driver类中的connect()方法,使用这个方法会返回一个java.sql.Connection接口的实例
*/
Connection conn = driver.connect(url,info);
//这里我们输出获得的连接,看看有没有输出数据来判断时候和指定的数据库连接成功
System.out.println(conn);
}
}