首页 > 其他分享 >554JDBC事务管理 Jdbc事务管理 and555JDBC管理事务_概述 556JDBC管理事务实现

554JDBC事务管理 Jdbc事务管理 and555JDBC管理事务_概述 556JDBC管理事务实现

时间:2022-10-18 09:12:20浏览次数:41  
标签:username 事务管理 事务 Jdbc String sql password conn

JDBC事务管理

1.Preparedstatement:执行sql的对象
  1.SQL注入问题:在拼接sql时,有一些的sql的特殊关键字参与字符串的拼接。会造成安全性问题

  2.用户随便输入:例如dawugfak,密码输入a' or = 'a' 'a

  3.sql:select* from user where username = 'fhdsjkf' and password='a' or 'a'='a

2.解决sql注入问题:使用preparedStatement对象来解决

3.预编译的sql:参与使用?作为占位符

步骤:  
    导入驱动jar包mysql-connector-java-5.1.37-bin.jar

    注册驱动

    获取数据库连接对象connection

    定义sql

      注意;sql的参数使用?作为占位符。如; select*from user where username = ? and password = ?;获取执行sql语句的对象 Preparedstatement Connection.prepareStatement(string sql)

    给?赋值︰

      *方法:setxxx(参数1,参数2)

        *参数1:?的位置编号从1开始*参数2:?的值

    执行sq1,接受返回结果,不需要传递sql语句

    处理结果

    释放资源

public class JDBC_demo003lx {
    public static void main(String[] args) throws SQLException {
        //1.键盘录入,接受用户和密码
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();

        //2.调用方法,非静态方法new一个对象
        boolean flag = new JDBC_demo003lx().login(username, password);

        //3.判断结果,输出不同语句
        if (flag) {
            System.out.println("登录成功");
        } else {
            System.out.println("登录失败");
        }
    }

    /*写一个登陆方法,有参数用户和密码,返回是否登陆成功*/
    public boolean login(String username, String password) throws SQLException {
        //判断录入的密码和用户名是否为空
        if (username == null || password == null) {
            return false;
        }
        //连接数据库判断是否登陆成功
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;

        //1.获取链接

        try {
            conn = JDBCUtils.getConnection();
            //2.定义sql语句
            String sql = "select * from user where username= ? and password = ?";
            //3.获取执行sql的对象
            stmt = conn.prepareStatement(sql);
            //给?赋值
            stmt.setString(1, username);
            stmt.setString(2, password);
            //4.执行查询
            rs = stmt.executeQuery();
            //5.判断结果集是不是有数据
            return rs.next(); //返回为布尔型数据,如果有下一行就返回true
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //6.释放资源
            JDBCUtils.close(rs, stmt, conn);
        }
        return false;
    }
}

 

 

 JDBC管理事务_概述

  事务:一个包含多个步骤的业务操作,如果这个业务操作被事务管理,则多个步骤同时成功要么同时失败

    操作

      开启事务

      提交事务

      回滚事务

    使用Connection对象来管理事务对象

      开启事务:setAutoCommit(boolaen autoCommit) 使用该方法设置参数false,级开启事务

      提交事务:commit

      回滚事务:rollback

 

public static void main(String[] args) throws SQLException {
        Connection conn = JDBCUtils.getConnection();
        String sql1 = "update account set balance = balance - ? where id = ?";
        String sql2 = "update account set balance = balance + ? where id = ?";

        PreparedStatement pstmt1 = conn.prepareStatement(sql1);
        PreparedStatement pstmt2 = conn.prepareStatement(sql2);

        pstmt1.setDouble(1,500);
        pstmt1.setInt(2,3);

        pstmt2.setDouble(1,500);
        pstmt2.setInt(2,4);

        pstmt1.executeUpdate();

        pstmt2.executeUpdate();

        JDBCUtils.close(pstmt1,conn);
        JDBCUtils.close(pstmt2,null);
    }
}

 

标签:username,事务管理,事务,Jdbc,String,sql,password,conn
From: https://www.cnblogs.com/agzq/p/16801432.html

相关文章

  • mysql事务隔离级别及MVCC 原理
    一、事务的隔离级别为了保证事务与事务之间的修改操作不会互相影响,innodb希望不同的事务是隔离的执行的,互不干扰。两个并发的事务在执行过程中有读读、读写(一个事务在读......
  • JdbcConfig
    JdbcConfigjdbc.properties注解版@Value("${jdbc.driver}")privateStringdriver;@Value("${jdbc.url}")privateStringurl;@Value("${jdbc.use......
  • 事务
    事务:事务简介:数据库的事务是一种机制,一个操作序列,包含了一组数据库操作命令事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功......
  • day49-JDBC和连接池05
    JDBC和连接池0511.BasicDAO先来分析一个问题前面我们使用了Apache-DBUtils和Druid简化了JDBC开发,但仍存在以下不足:SQL语句是固定的,不能通过参数传入,通用性不好,需要......
  • JDBC连接数据库
    目录 ​​1、写在前面✏️​​​​2、遇到问题​​​​3、解决问题​​​​4、总结......
  • 数据库基础——锁与事务
     一、锁(MyISAM和InnoDB)1.MyISAM:默认表级锁,不支持行锁。  select 读锁为共享锁。可以同时执行多个读的操作  update、insert、delete等操作为......
  • day48-JDBC和连接池04-2
    JDBC和连接池04-210.数据库连接池10.5Apache-DBUtils10.5.1resultSet问题先分析一个问题在之前的程序中,执行sql语句后返回的结果集存在如下问题:关闭connection后......
  • JDBC各个类详解_ResultSet基本使用和ResultSet遍历结果集
    ResultSet:结果集对象,封装查询结果 *booleannext():游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true *get......
  • JDBC练习_insert语句和update语句和delete
    添加一条insert记录publicstaticvoidmain(String[]args){Statementstmt=null;Connectionconn=null;try{//1.注册驱动......
  • JDBC练习-update语句和JDBC练习-update、DDL语句
    JDBC练习-update语句练习:account表修改记录JDBC练习-update、DDL语句练习:account表删除一条记录 执行DDL语句......