乐趣区

关于数据库: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 编程六步(重点)

  • 第一步:注册驱动(作用:通知 Java 程序,行将要连贯的是哪个品牌的数据库)
  • 第二步:获取连贯(示意 JVM 的过程和数据库过程之间的通道关上了,这属于过程之间的通信,重量级的,应用完之后肯定要敞开通道。)
  • 第三步:获取数据库操作对象(专门执行 sql 语句的对象)
  • 第四步:执行 SQL 语句(DQL DML….)
  • 第五步:解决查问后果集(只有当第四步执行的是 select 语句的时候,才有这第五步解决查问后果集。)
  • 第六步:开释资源(应用完资源之后肯定要敞开资源。Java 和数据库属于过程间的通信,开启之后肯定要敞开。)

注册驱动形式两种


应用资源绑定器绑定属性配置文件

URL 解析

5. 遍历后果集

idea

导入.jar 包

字符串中拼变量
(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();

}

}

  • 行级锁(for Update)
  • 乐观锁:事务没完结之前,事务必须排队,一整行记录不准改变,不容许并发。
  • 乐观锁:反对并发,事务不排队,须要一个版本号。一个事务发现前后的版本号不统一了 就执行回滚操作,本次操作不执行。
退出移动版