JDBC学习笔记-动力节点

JDBC (B站动力节点杜老师)

1.JDBC是什么

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Er95FGxR-1592179990265)(#%20JDBC%20(B%E7%AB%99%E5%8A%A8%E5%8A%9B%E8%8A%82%E7%82%B9%E6%9D%9C%E8%80%81%E5%B8%88)].assets/image-20200520122253209.png)

2.jdbc的本质是什么?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jp33PydS-1592179990268)(#%20JDBC%20(B%E7%AB%99%E5%8A%A8%E5%8A%9B%E8%8A%82%E7%82%B9%E6%9D%9C%E8%80%81%E5%B8%88)].assets/image-20200520123526769.png)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ieA2EzrU-1592179990285)(#%20JDBC%20(B%E7%AB%99%E5%8A%A8%E5%8A%9B%E8%8A%82%E7%82%B9%E6%9D%9C%E8%80%81%E5%B8%88)].assets/image-20200520123618894.png)

image-20200520123901952.png

多态:

Animal a = new Cat ( ) --》面向抽象编程

父类型的引用 指向 子类型的对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HO0cOuFn-1592179990301)(#%20JDBC%20(B%E7%AB%99%E5%8A%A8%E5%8A%9B%E8%8A%82%E7%82%B9%E6%9D%9C%E8%80%81%E5%B8%88)].assets/image-20200520123504041.png)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0k1quag6-1592179990305)(# JDBC (B站动力节点杜老师)].assets/image-20200521131318436.png)

3.开发前准备工作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7HP0fZ27-1592179990308)(# JDBC (B站动力节点杜老师)].assets/image-20200521131330271.png)

4.jdbc 过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R5AzifAU-1592179990311)(# JDBC (B站动力节点杜老师)].assets/image-20200523091352437.png)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tSMUmfuO-1592179990315)(# JDBC (B站动力节点杜老师)].assets/image-20200521134916687.png)

注册驱动方式两种

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uzbYwycU-1592179990318)(# JDBC (B站动力节点杜老师)].assets/image-20200521135722819.png)

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dSE9HCBi-1592179990320)(# JDBC (B站动力节点杜老师)].assets/image-20200521140205630.png)

URL解析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tp5xSHBq-1592179990324)(# JDBC (B站动力节点杜老师)].assets/image-20200521174127516.png)

5.遍历结果集

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4JjABWN-1592179990328)(# JDBC (B站动力节点杜老师)].assets/image-20200521160212170.png)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hKD20U34-1592179990340)(# JDBC (B站动力节点杜老师)].assets/image-20200521155850934.png)

idea

导入.jar包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5hC2gqN3-1592179990344)(# JDBC (B站动力节点杜老师)].assets/image-20200603181315194.png)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bgfHUiCH-1592179990346)(# JDBC (B站动力节点杜老师)].assets/image-20200603181439047.png)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nZ6nbz3B-1592179990349)(# JDBC (B站动力节点杜老师)].assets/image-20200603181510913.png)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iC35SqaB-1592179990354)(# JDBC (B站动力节点杜老师)].assets/image-20200603181636587.png)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zjMK5xP-1592179990356)(# JDBC (B站动力节点杜老师)].assets/image-20200603181743776.png)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pj3j0dB9-1592179990359)(# JDBC (B站动力节点杜老师)].assets/image-20200603181834498.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/wodeshuju?useSSL=false&serverTimezone=UTC","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();

}

}

6.工具类封装

package utils;
import java.sql.*;
/*
* JDBC工具类,简化JDBC编程
* */
public class DBUtil {
    /*工具类中的构造方法都是私有的,以为工具类当中的方法都是静态的
      不需要new对象,直接采用类名调用。*/
    private DBUtil(){}
    //静态代码块在类加载时执行,并且只执行一次。
    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection() throws SQLException{
        //获取数据库连接对象,返回连接对象
        return DriverManager.getConnection("jdbc:mysql://localhost:3306/wodeshuju?useSSL=false&serverTimezone=UTC"
                    ,"root","131138");
    }
    //关闭资源,conn:连接对象,ps:数据库操作对象 rs:结果集
    public static void close(Connection conn, Statement ps, ResultSet rs){
        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 {
                conn.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
    }
}

7.JDBC实现模糊查询

package utils;
import javax.swing.text.html.HTMLWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/*
* 1.测试DBUtil是否好用
* 2.模糊查询怎么写?
* */
public class JDBCTest9 {
    public static void main(String[] args) throws SQLException {
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        try {
            //获取连接
            conn= DBUtil.getConnection();
            //获取预编译的数据库操作对象
            //错误写法
           /* String sql="select ename from emp where name like '_?%'";
            ps=conn.prepareStatement(sql);
            ps.setString(1,'A');*/
            String sql="select ename from emp where name like ?";
            ps=conn.prepareStatement(sql);
            ps.setString(1,"_A%");
            rs=ps.executeQuery();
            while (rs.next()){
                System.out.println(rs.getString("ename"));
            }
 }catch (SQLException e){
            e.printStackTrace();
        }finally {
            //释放资源
            DBUtil.close(conn,ps,rs);
        }
    }
}

8.行级锁 (for Update)

悲观锁:事务没结束之前,事务必须排队,一整行记录不准改动,不允许并发。
乐观锁:支持并发,事务不排队,需要一个版本号。一个事务发现前后的版本号不一致了 就执行回滚操作 ,本次操作不执行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d4LmI685-1592179990363)(# JDBC (B站动力节点杜老师)].assets/image-20200528122649113.png)

————————————————
版权声明:本文为CSDN博主「暴走的山交」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43649223/article/details/106755584

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值