JDBC:Java访问数据库的技术
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。
DAO Database Access Object(数据库访问对象) 在工程中,从属于dao层。 respository(仓库)
之前处理其他业务逻辑,与DB无关,成为service层,比如处理注册登录的业务功能。
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。
DAO Database Access Object(数据库访问对象) 在工程中,从属于dao层。 respository(仓库)
之前处理其他业务逻辑,与DB无关,成为service层,比如处理注册登录的业务功能。
一、向Eclipse工程中导入jar包(一般的封装类在项目中都放在一个单独的page包中util)
创建包的时候一般是需要后缀为dao。如:com.zhiyou.dao
1.首先需要导入一个jar包(第三方工具包):mysql-connector-java-8.0.17.jar
(1)在网上下载:Connector/J中
(2)在MySQL的安装包中找到:
MySQL5.8版本之后的MySQL在安装过程中也会把这个jar包下载下来。
位置在:C:\Program Files (x86)\MySQL\Connector J 8.0.17.jar
2.将jar包加入到工程中:目的是可以使用jar中的工具类,能让eclipse编译时可以识别
(1)右键工程名字创建lib(资源库)文件夹(Floder)
(2)将jar包拖拽到lib文件夹中,选择copy file
(3)右键lib中的jar包,选择Build Path --->Add to Build Path
(4)Add to Build Path之后会在lib文件夹上方出现Referenced Librarice(被使用的资源库),里面包含这个jar包(jar包的图标会变)
这个jar包里面放的都是工具包和工具类的编译类(xx.class)。关键:com.mysql.cj.jdbc.Driver.class
二、JDBC步骤分析
步骤:
1.加载驱动
2.建立连接
3.准备SQL
4.执行SQL
5.处理结果
6.断开连接
(1)实现查询功能(Query)
1 加载驱动
加载jar包中的驱动类Driver.class,用到的方式是反射
使用Class.forName 这一反射方式加载Driver类的原因是因为 :倘若使用new Driver()方式,则会首先执行Driver类中的静态代
码块, 而静态代码块中又出现了一次new Driver(),如此 相当于new了两次Driver对象,不好!
所以,使用Class.forName也会执行Driver类中的静态代码块,最终也就只执行了一次new对象。这种方式才是我们想要的。
String----》find class ---》load---》static---》new Driver()
1.Class.forName("com.mysql.cj.jdbc.Driver"); :使用Class类的forName方法来加载驱动
需要解决异常(throws抛出或者try/catch解决)
2.建立连接 : 使用DriverManager类的connection方法返回一个Connection的实例
(1)使用DriverManager中的getConnection(url,user,password)方法,返回值类型是Connection类型
DriverManager.getConnection(url,username,password);
给url赋值为:"jdbc:mysql://localhost:3306/student?serverTimezone=GMT%2B8",用户名及密码为安装数据库时设置的。
都是String类型
url的格式:协议//本机主机:端口号/数据库名?serverTimezone=GMT%2B8
url的格式中数据库后面的是mysql8版本必须指定的时区,需要在数据库后面加上配置信息(否则会出现时区异常)
String url = "jdbc:mysql://localhost:3306/student?serverTimezone=GMT%2B8";
String user = "root";
String password = "1234";
(2)因为在准备下一步的准备SQL中要使用DriverManage.getConnection(url,user,password)方法拿到的Connection对象
connection中的方法,所以需要创建对象并将方法返回值赋给Connection的对象connection
Connection connection = null;
2. connection = DriverManager.getConnection(url,user,password);
(3)解决异常(throws抛出或者try/catch解决)
3.准备SQL : 使用Connection中的prepareStatement方法,返回了一个PrepareStatement实例。将sql语句给数据库先编译
(1)使用connection中的prepareStatement()方法,参数为数据库语言,如:sql,返回值类型为PreparedStateme