JDBC01 获取数据库连接

概述

Java Database Connectivity(JDBC)直接访问数据库,通用的SQL数据库存取和操作的公共接口,定义访问数据库的标准java类库(java.sql,javax.sql)

JDBC程序编写步骤

说明:
1.创建Connection对象相当于与数据库建立了链接
2.查询与增删改的差别是是否需要结果集,所以查询需要ResultSet对象

获取数据连接

目的:创建Connection对象

buid path

说明:如果只是将jar包复制到Java工程里面去,是无法使用jar包里面的类,因为无法找到jar包,所以build path其实就是添加jar包的路径

驱动下载

1.先导入jar包

image

File -> Project Structure -> Modules -> 选中要添加build path的项目 -> Dependencies -> 点击右边的小加号 -> 选择JARs or directories -> 选中jar包的目录

image

Driver注册

获取Driver实现类对象

 //注册 JDBC 驱动
Class.forName("com.mysql.cj.jdbc.Driver");

把Driver类加载到内存中,Driver类中有一段静态代码块(随类的加载而加载)

//Driver类中的静态代码块
static{
	try{
		java.sql.DriverManager.registerDriver(new Driver());
	}catch(SQLException E){
		throw new RuntimeException("Can't register driver!");
	}
}

所以就不需要手动注册驱动了

//获得该类时自动完成了下面的代码
//加载Driver
Class clazz = Class.forName("com.mysql.jdbc.Driver");
// 获得实例
Driver driver =(Driver)clazz.getDeclaredConstructor().newInstance();
DriverManager.registerDriver(driver); //注册驱动

反射知识复习

Class的实例对应一个运行时类
获取Class实例=获取该类=获取运行时类,调用Class的静态方法forName(String classPath) classPath 包名.类名

java.exe命令对某个字节码文件进行解释运行,相当于将某个字节码文件加载到内存中。此过程称为类的加载.加载到内存中的类,就称为运行时类

创建运行时类的对象,要求
1.调用空参构造器,所以该运行时类必须有空参构造器
2.空参构造器的访问权限要足够

Class<Person> clazz = Person.class;
clazz.getDeclaredConstructor().newInstance();

URL

示例:jdbc:mysql://localhost:3306/test
jdbc:mysql 协议
localhost ip地址
3306 默认mysql端口号
test mysql中的test数据库

注意点:
1.MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。
2.allowPublicKeyRetrieval=true 允许客户端从服务器获取公钥。
3.最后还需要设置时区Asia/Shanghai

创建Connection对象,使用DriverManager的静态方法

//使用的静态方法
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai","root","password");

获取数据连接

 //Mysql8.0以上 - JDBC驱动名
final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
//数据库url
final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
final String USER = "root";
final String PASSWORD = "root";
//加载驱动
Class.forName(JDBC_DRIVER); //可以省略

//获取mysql连接
Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);

这里的信息应该都写在配置文件中,不应该写在代码块中。通过读取配置文件的方式,获取连接。
这种方式的好处
1.实现数据与代码的分离,实现了解耦
2.如果需要修改配置文件信息,可以避免程序重新打包

image

//1.以流的方式获取配置信息,默认路径时src下
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String USER = pros.getProperty("user");
String PASSWORD = pros.getProperty("password");
String DB_URL = pros.getProperty("url");
String JDBC_DRIVER = pros.getProperty("jdbc_driver");

//2.注册驱动
Class.forName(JDBC_DRIVER);

//3.获取mysql连接
Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
System.out.println(conn);
posted @ 2021-06-08 11:00  rananie  阅读(57)  评论(0编辑  收藏  举报