JDBC保姆级学习笔记-Java数据库连接

Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的.下面是根据B站的视频教程总结的学习笔记。
相关视频教程:https://www.bilibili.com/vide...
1、JDBC是什么? Java DataBase Connectivity(Java语言连接数据库)
2、JDBC的本质是什么? JDBC是SUN公司制定的一套接口(interface)
java.sql.*; (这个软件包下有很多接口。)
接口都有调用者和实现者。
面向接口调用、面向接口写实现类,这都属于面向接口编程。
为什么要面向接口编程?
解耦合:降低程序的耦合度,提高程序的扩展力。
多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)
1. 建议:
Animal a = new Cat();
Animal a = new Dog();
// 喂养的方法
public void feed(Animal a){ // 面向父类型编程。
}
2. 不建议:
Dog d = new Dog();
Cat c = new Cat();
思考:为什么SUN制定一套JDBC接口呢?

  • 因为每一个数据库的底层实现原理都不一样。
  • Oracle数据库有自己的原理。
  • MySQL数据库也有自己的原理。
  • MS SqlServer数据库也有自己的原理。
  • ....
  • 每一个数据库产品都有自己独特的实现原理。
JDBC的本质到底是什么?
一套接口。
3、JDBC开发前的准备工作,先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath当中。 classpath=.; D:\course\06-JDBC\resources\MySql Connector Java 5.1.23\mysql-connector-java-5.1.23-bin.jar
以上的配置是针对于文本编辑器的方式开发,使用IDEA工具的时候,不需要配置以上的环境变量。
IDEA有自己的配置方式。
4、JDBC编程六步(重点) JDBC保姆级学习笔记-Java数据库连接
文章图片

  • 第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)
  • 第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)
  • 第三步:获取数据库操作对象(专门执行sql语句的对象)
  • 第四步:执行SQL语句(DQL DML....)
  • 第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)
  • 第六步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)
JDBC保姆级学习笔记-Java数据库连接
文章图片

注册驱动方式两种
JDBC保姆级学习笔记-Java数据库连接
文章图片

使用资源绑定器绑定属性配置文件
JDBC保姆级学习笔记-Java数据库连接
文章图片

URL解析
JDBC保姆级学习笔记-Java数据库连接
文章图片

5.遍历结果集 JDBC保姆级学习笔记-Java数据库连接
文章图片

idea
导入.jar包
JDBC保姆级学习笔记-Java数据库连接
文章图片

JDBC保姆级学习笔记-Java数据库连接
文章图片

JDBC保姆级学习笔记-Java数据库连接
文章图片

JDBC保姆级学习笔记-Java数据库连接
文章图片

JDBC保姆级学习笔记-Java数据库连接
文章图片

JDBC保姆级学习笔记-Java数据库连接
文章图片

字符串中拼变量
(sql)单引号中 加双引号 加两个加号++ 加号里面加变量
PreparedStatement预编译
查(SELECT)
第四步用 rs = ps.executeQuery(“字段”);
增删改(INSERT DELETE UPDATE)
第四步用 rs= ps.executeUpdate(“字段”);
框架(select)
public static void main(String[] args){ Connection conn = null; PreparedStatement ps = null; //加d是名词 ResultSet rs = null; try { //1.注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //2.获取连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/codeyuaiiao?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8","root","3615yuhaijiao"); //3.获取预编译的数据库操作对象 String sql = "select * from student"; ps = conn.prepareStatement(sql); //动词 //4.执行sql语句 rs = ps.executeQuery(); //查询select //rs = ps.executeUpdate(); //增删改都是用Update(INSERT DELETE UPDATE) //5.处理查询结果集 } catch (Exception e) { e.printStackTrace(); }finally { //6.释放资源 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } } }

事务三件套 (开启 提交 回滚)
conn.setAutoCommit(false); 关闭自动提交 开启事务
conn.commit(); 手动提交
conn.rollback(); catch中写 回滚
if(conn != null){
try{
conn.rollback();
}catch(sqlException e1){
e1.printStackTrace();
【JDBC保姆级学习笔记-Java数据库连接】}
}
  • 行级锁 (for Update)
  • 悲观锁:事务没结束之前,事务必须排队,一整行记录不准改动,不允许并发。
  • 乐观锁:支持并发,事务不排队,需要一个版本号。一个事务发现前后的版本号不一致了 就执行回滚操作 ,本次操作不执行。

    推荐阅读