JDBC初学(复习)必备学习笔记-保姆级笔记教程

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 教程中讲解了Java语言如何连接数据库,对数据库中的数据进行增删改查操作,适合于已经学习过Java编程基础以及数据库的同学。Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等。

本文是根据B站动力节点老杜的视频教程做的笔记,教程中讲解了Java语言如何连接数据库,对数据库中的数据进行增删改查操作,适合于已经学习过Java编程基础以及数据库的同学。Java教程中阐述了接口在开发中的真正作用,JDBC规范制定的背景,JDBC编程六部曲,JDBC事务,JDBC批处理,SQL注入,行级锁等。

废话不多说直接整活!!!


1、JDBC是什么?

Java DataBase Connectivity(Java语言连接数据库)


2、JDBC的本质是什么?

JDBC是SUN公司制定的一套接口(interface)

java.sql.*; (这个软件包下有很多接口。)

接口都有调用者和实现者。

面向接口调用、面向接口写实现类,这都属于面向接口编程。

为什么要面向接口编程?

解耦合:降低程序的耦合度,提高程序的扩展力。

多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)

建议:

Animal a = new Cat();

Animal a = new Dog();

// 喂养的方法

public void feed(Animal a){ // 面向父类型编程。


}

不建议:

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有自己的配置方式。


src=http___nimg.ws.126.net__url=http___dingyue.ws.126.net_2021_0508_bcefd463j00qss5zd000gd200e5008cg00e5008c.jpg&thumbnail=650x2147483647&quality=80&type=jpg&refer=http___nimg.ws.126.jpg

4、JDBC编程六步(重点

第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)

第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)

第三步:获取数据库操作对象(专门执行sql语句的对象)

第四步:执行SQL语句(DQL DML....)

第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)

第六步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)


图片.png

 

 注册驱动方式两种图片.png

 

使用资源绑定器绑定属性配置文件 图片.png

URL解析

图片.png

 图片.png

5.遍历结果集

图片.png


idea

导入.jar包

图片.png

图片.png图片.png 

图片.png图片.png 

图片.png

 

字符串中拼变量

(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)

悲观锁:事务没结束之前,事务必须排队,一整行记录不准改动,不允许并发。

乐观锁:支持并发,事务不排队,需要一个版本号。一个事务发现前后的版本号不一致了 就执行回滚操作 ,本次操作不执行。

图片.png

操作完结!!!

图片.png


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
SQL Java 数据库连接
Hive教程(08)- JDBC操作Hive
Hive教程(08)- JDBC操作Hive
171 0
|
3月前
|
Java 关系型数据库 MySQL
JDBC学习笔记
JDBC学习笔记
|
8月前
|
SQL druid Java
JAVA进阶 JDBC技术学习笔记(四)
JAVA进阶 JDBC技术学习笔记(四)
|
8月前
|
XML Java 数据库连接
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-原始jdbc操作1
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-原始jdbc操作1
41 0
|
8月前
|
SQL druid Java
[Java]JDBC学习笔记(尚硅谷康师傅JDBC)(四)
[Java]JDBC学习笔记(尚硅谷康师傅JDBC)(四)
|
8月前
|
SQL 存储 Java
[Java]JDBC学习笔记(尚硅谷康师傅JDBC) (二)
[Java]JDBC学习笔记(尚硅谷康师傅JDBC)(二)
|
4月前
|
Java 数据库连接
JDBC课堂笔记
JDBC课堂笔记
29 1
|
4月前
|
Java 数据库连接 数据库
JDBC连接池&JDBCTemplate课堂笔记
JDBC连接池&JDBCTemplate课堂笔记
36 1
|
6月前
|
Java 数据库连接 数据库
JDBC学习笔记2
JDBC学习笔记2
32 0
|
6月前
|
SQL Java 关系型数据库
JDBC学习笔记
JDBC学习笔记
108 0