lyt0612

导航

2022-08-19 第二组刘禹彤 学习笔记

打卡36天

###学习内容

JDBC(续)

Statement的不足:

1、大量的字符串拼接,代码可读性降低。

2、sql注入

SQL注入:BUG 通过字符串的拼接,可以得到一个恒等的sql语句,可以跳过某些判断。

PreparedStatement

预编译(预加载)

1.通过conn获取的对象

2.通过Statement接口的子接口

3.sql语句中可以传参-----用?占位,通过setxxx方法来给?赋值

4.提高性能

5.避免sql注入

数据库事务

数据库特性

Mysql的数据库引擎

1.在MySQL中,只有使用了Innodb引擎的数据库才支持事务

2.事务处理可以用来维护数组的完整性,保证sql语句要么全部执行,要么全部不执行

3.发生在DML中,增删改

事务的四大特征ACID

  • 原子性A

一个事务,要么全部完成,要么全部不完成

  • 一致性C

在事务开始之前和事务结束之后,数据库的完整性没有被破坏

  • 隔离性Isolation

数据库允许多个事务同时对数据进行处理,每个事务之间相互隔离

  • 持久性D

事务结束之后,对数据的增删改是永久性的

术语

提交事务,回滚事务(事务回滚)

1.事务一旦提交,就不可能回滚

2.当一个连接对象创建时,默认情况下自动提交事务

3.关闭连接时,数据会自动提交事务

操作事务的步骤

1.关闭事务的自动提交

true:开启(默认) false:关闭

2.当做出增删改操作,把变化发生在内存中,提交事务才会真正交给数据库

###学习心得

今天继续学习JDBC,其中有PreparedStatement和数据库事务,知识点理解的还可以

###掌握情况:一般

###课上练习

package a;

import a.Util.JDBCUtil;
import org.junit.Test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Ch01 {
    @Test
    public void test01() {

        Connection conn = null;
        PreparedStatement pstmt = null;

        try {
            conn = JDBCUtil.connection();
            String sql = "update teacher set name = ? where id = ?";
            // 预编译
            pstmt = conn.prepareStatement(sql);
            // 给占位符赋值,根据位置
            pstmt.setString(1,"JJ");
            pstmt.setInt(2,6);

            // 正式执行sql
            int i = pstmt.executeUpdate();
            System.out.println(i);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtil.close(conn,pstmt);
        }

    }

}

###运行结果

 

 

posted on 2022-08-19 18:24  小仙女吖~  阅读(18)  评论(0编辑  收藏  举报