JDBC学习
1. JAVASE 和 JAVAEE 区别
2. JDBC规范
1.JAVAEE中的一种规范
2.指定Java类与关系型数据库服务器【MySql,Oracle,SqlServer】之间沟通规则
3.JDBC规范提供接口存在JDKJAR中。java.sql包
4.JDBC规范接口实现类由不同关系型数据库服务器厂商以JAR包形式提供
SUN公司制定好一套接口,这套接口就是一套连接数据库的API,这套API叫做:JDBC .换句话说:Java程序员根本不需要关系底层的数据库是哪种类型,编写一套Java代码就可以连接所有的数据库。 可见我们Java程序员是面向JDBC接口调用相关的方法来完成数据库的CRUD(增删改查)操作。
后面会学习到MyBatis是将JDBC规范来进行封装,使用MyBatis框架来完成对应的数据库的连接和对于sql语句的调用,将下面的调用流程中各个步骤给封装起来,将开发步骤给简化到很少,只需要程序员注重于最后的sql的编写,其实就相当在学习课程中jdbc的工具类的开发,框架来将步骤给更简化出来。
3. JDBC 的开发步骤
3.1 调用流程
1.将MySql服务器厂商提供Driver接口实现类注册到JVM
2.通过JDBC规范中DriverManager在Java工程与MySql服务器之间建立一个【连接通道】connection
3.通过MySql服务器厂商提供Connection接口实现类建立一个交通工具【PreparedStatement】
4.通过交通工具【PreparedStatement】将SQL命令从Java工程推送到MySql服务器上执行并带回执行结果
5.销毁本次交易过程涉及所有资源对象
3.2 相关步骤的程序
注册驱动:
第一种方式:
try{
//创建驱动对象
java.sql.Driver driver = new com.mysql.jdbc.Driver(); //多态
//完成驱动注册
DriverManager.registerDriver(driver);
}catch(SQLException e){
e.printStackTrace();
}
第二种方式:
Class.forName("com.mysql.jdbc.Driver");
获取连接对象:
String url = "jdbc:mysql://localhost:3306/wkcto";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url,user,password);
获取数据库操作对象:
/*
通过连接对象Connection获取数据库操作对象Statement代码:
一个数据库连接对象可以创建多个数据库操作对象。
*/
Statement stmt = conn.createStatement();
Statement stmt2 = conn.createStatement();
推送sql命令,不同的SQL执行命令是Statement使用不同的方法,比如executeUpdate、executeQuery分别用于执行更新命令和查询命令,在采用的不同方法最后的返回结果也是会用到不同的结果类型来接住对应的结果值
int count = stmt.executeUpdate("DML语句insert update delete");
获得执行结果并销毁资源
Connection、Statement、ResultSet都会 占用一定的资源,它们需要全部释放/关闭
为了保证每一个资源都可以关闭,建议将关闭资源的代码写到finally语句块当中。
- 先关闭ResultSet、再关闭Statement、最后关闭Connection。
- 在finally语句块当中关闭这些资源的话必须保证这些变量在finally语句块当中是可以访问的,需要将try语句块当中的局部变量提出到try语句块之外。
- 关闭这些资源的时候统一调用close方法
- 关闭资源之前最好判断这些资源是否为空,避免空指针异常的发生。
- 关闭的close方法有异常,需要编写代码的时候处理这些异常,分别对其进行异常处理,不要一块try进行处理。
3.3 调用流程中的重要实现类
1)java.sql.DriverManager类:这个类存在于JDK_1.8下。
负责将数据库厂商提供Driver接口实现进行注册
负责在Java工程与MySql服务器之间建立一个【连接通道】
2)java.sql.Connection接口:负责管理Java工程与数据库服务器之间【连接通道】
3)java.sql.PreparedStatement接口:负责管理在【连接通道】 上进行往返交通的【交通工具】
- java.sql.ResultSet接口:负责管理数据库服务器返回【临时表】
3.4 调用查询语句后结果的处理
使用查询语句后是将获得一个临时表,表中存放的是符合条件的查询结果对象,使用一个resultSet接口实现类来作为的结果的数据类型,将采用循环遍历的形式将最后的查询结果给展示出来
4.属性配置文件
连接数据库的信息中包括driver、url、user、password这些信息可以放置进配置文件properties,存放于maven项目下的Resource文件夹下
将以上的配置信息写到属性配置文件当中,以后如果想要连接到其他的数据库,直接让用户修改配置文件中的各类参数的信息就可以了,其余的java程序是不用发生变化的
针对属性配置文件
- 属性配置文件通常扩展名是:xx.properties,但不是必须的
- 属性配置文件当中配置了大量的key和value,通常key和value之间使用“=”隔开,但不是必须的
- 属性配置文件当中的key不能重复,重复的话value会覆盖
- java.util.Properties属性类是Map集合,key和value都是String类型,并且是线程安全的
- 属性配置文件当中的key一旦确定,不要修改,一般都是修改value,因为key是写死在程序中的。
5.实体类
最终查询操作生成的是好多条数据,在java程序中,面向对象的特性下,就将最后查询到的每条数据都给作为一个对象进行输出,然后数据的各个字段给设计成对象的属性
而作为对象的父类就是一个实体类,和表名保持一致,然后实现这个类进行初始化对象,来承载每条数据
1、一个实体类是用于描述一张表的结构
2、实体类的类名应该与关联的表名保持一致,但是可以忽略大小写
3、实体类的属性应该与关联的表文件字段保持一致
4、实体类的一个实例对象用于在内存中存储对应的表文件中的一个数据行, 一行数据就是一个实体类的实例化对象