JDBC

作者: 菜鸟要逆袭 | 来源:发表于2021-11-06 19:24 被阅读0次

JDBCUtils

public class JDBCUtils {

    private static final String url = "jdbc:mysql://localhost:3306/test";
    private static final String user = "root";
    private static final String password = "3306";
    private static final String driverName = "com.mysql.jdbc.Driver";

    static{
        try{
            /*注册驱动,只需注册一次,不重复注册*/
            Class.forName(driverName);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        try {
            /*获取数据库连接对象*/
            Connection con = DriverManager.getConnection(url,user,password);
            return con;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    public static void closeResource(Connection con, Statement stat,ResultSet rs){
        /*关闭资源*/
        if(con != null){
            try{
                con.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        if(stat != null){
            try{
                stat.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        if(rs != null){
            try{
                rs.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        try{
            /*建立连接*/
            Connection con = JDBCUtils.getConnection();
            /*书写sql语句*/
            String sql = "select * from students where name like ? ";
            /*得到执行sql对象:statement/preparedstatement
             * statement:执行静态sql语句,每次执行语句,数据库都要执行sql编译操作,效率低,有参数的时候还需要拼接字符串,不能防止sql注入
             * preparedstatement:预编译sql语句,执行效率高,防止sql注入
             */
            PreparedStatement pre = con.prepareStatement(sql);
            pre.setString(1, "王%");
            /*获得查询结果并返回,返回结果使用结果集*/
            ResultSet rs = pre.executeQuery();
        }catch (Exception e){
            e.printStackTrace();
        }

    }
}

事物

public class TransactionTest {
    public static void main(String[] args) {
        Connection con = JDBCUtils.getConnection();
        PreparedStatement pre = null;
        Double money = 500d;
        try{
            /*降工资*/
            String sql1 = "update Salary set money = money-? where id = ?";
            pre = con.prepareStatement(sql1);
            pre.setDouble(1,money);
            pre.setString(2,"test1");
            pre.executeUpdate();

            /*涨工资*/
            String sql2 = "update Salary set money = money+? where id = ?";
            pre = con.prepareStatement(sql2);
            pre.setDouble(1,money);
            pre.setString(2,"test2");
            pre.executeUpdate();

            /*事物提交*/
            con.commit();
        }catch (Exception e){
            try {
                /*事物回滚*/
                con.rollback();
                System.out.println("工资修改失败!");
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(con,pre,null);
        }
    }
}

相关文章

  • JDBC

    JDBC原理: JDBC: 抽取JDBC工具类 : JDBCUtils JDBC控制事务:

  • JDBC 的使用

    JDBC JDBC什么是JDBCJDBC 的使用JDBC 的数据类型 什么是JDBC JDBC(Java Data...

  • Java和MySQL简建立连接

    JDBC JDBC插入多条数据 JDBC查询 JDBC动态传参 JDBC回滚 JDBC将数据库中的信息装入List...

  • JDBC

    JDBC JDBC:Java DataBase Connectivity JDBC的本质是什么?JDBC是SUN公...

  • java异常合集

    jdbc com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExce...

  • Day05--JDBC

    JDBC: 抽取JDBC工具类:JDBCUtils JDBC控制事务

  • JDBC

    JDBC: 抽取JDBC工具类 : JDBCUtils JDBC控制事务:

  • JDBC编程目录

    JDBC编程目录 SQL基础JDBC基础JDBC进阶

  • JDBC和数据库连接池

    1.JDBC介绍1.1 1.1 JDBC介绍 2.JDBC之API2.1 2.1 JDBC之API 3.JDBC例...

  • # day10_JDBC基础

    一,JDBC概述 1.为什么要使用JDBC 1.1没有JDBC 1.2有了JDBC后 2.JDBC的概念 2.1....

网友评论

      本文标题:JDBC

      本文链接:https://www.haomeiwen.com/subject/ogpjzltx.html