jdbc

jdbc_test

回滚

public class jdbc_test {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
  
        Connection conn = null;
        PreparedStatement pstmt1 = null;
        PreparedStatement pstmt2 = null;
        try {
            //获取连接
            conn = JDBCUtils.getConnection();
            //开启事务
            conn.setAutoCommit(false);
            //定义sql
            String sql1 = "update a2 set balance = balance - ? where id = ?";
            String sql2 = "update a2 set balance = balance + ? where id = ?";
            //获取执行Sql对象
            pstmt1 = conn.prepareStatement(sql1);
            pstmt2 = conn.prepareStatement(sql2);
            //设置参数
            pstmt1.setDouble(1, 500);
            pstmt1.setInt(2, 1);
            pstmt1.setInt(1, 500);
            pstmt1.setInt(2, 2);

            //执行sql
            pstmt1.executeUpdate();
            //手动制造一个异常
            int i = 3 / 0;
            pstmt2.executeUpdate();
            //提交事务
            conn.commit();
        }catch(Exception e){
            try{
                if(conn!=null){
                    conn.rollback();
                }
            }catch(SQLException e1){
                e1.printStackTrace();
            }
            e.printStackTrace();
        }finally {
            JDBCUtils.close(pstmt1,conn);
            JDBCUtils.close(pstmt2,conn);
        }
    }
}

登陆

  public boolean login(String username,String password) throws SQLException {
        if(username==null||password==null){
            return false;
        }
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try{
            conn = JDBCUtils.getConnection();
            //定义sql
            String sql ="select * from a1 where name = '"+username+"' and password = '"+password+"'";
            //获取执行sql对象
            stmt = conn.createStatement();
            //执行查询
            rs = stmt.executeQuery(sql);
            return rs.next();
        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            JDBCUtils.close(rs,stmt,conn);
        }
        return false;
    }

注册

 public boolean register(String username,String password) throws SQLException {
        boolean a=false;
        if(username == null || password == null) {
            return a;
        }
        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;

        try {
            conn = JDBCUtils.getConnection();

            //确认该账号是否已被注册 查询语句
            //定义sql
            String sql1 = "select * from a1 where name = '"+username+"'";
            //获取执行sql对象
            stmt = conn.createStatement();
            //执行查询
            rs=stmt.executeQuery(sql1);

            //开始注册 插入语句
            //定义sql
            String sql = "INSERT INTO a1 (name,password) VALUES ('"+username+"','"+password+"')";
            //获取执行sql对象
            stmt = conn.createStatement();
            //执行插入
            if(stmt.executeUpdate(sql)>=1)
                a=true;
            return a;
        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            JDBCUtils.close(stmt,conn);
            JDBCUtils.close(rs,stmt,conn);
        }
        return a;
    }

全部

public class jdbc_test {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.导入jar包
        //2.注册驱动
        //       Class.forName("com.mysql.jdbc.Driver");//alt+回车
        //3.获取数据库连接对象 Connection
        //       Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/a","root","123456");
        //4.定义sql
        //      String sql = "update a1 set name = 'xyz1' where id=2";
        //5.获取执行sql语句对象,Statement
        //       Statement statement = connection.createStatement();
        //6.执行sql语句,接收返回结果
        //       int count = statement.executeUpdate(sql);
        //7.处理结果
        //       System.out.println(count);
        //8.释放资源
        //       statement.close();
        //       connection.close();



//        Connection conn = null;
//        PreparedStatement pstmt1 = null;
//        PreparedStatement pstmt2 = null;
//        try {
//            //获取连接
//            conn = JDBCUtils.getConnection();
//            //开启事务
//            conn.setAutoCommit(false);
//            //定义sql
//            String sql1 = "update a2 set balance = balance - ? where id = ?";
//            String sql2 = "update a2 set balance = balance + ? where id = ?";
//            //获取执行Sql对象
//            pstmt1 = conn.prepareStatement(sql1);
//            pstmt2 = conn.prepareStatement(sql2);
//            //设置参数
//            pstmt1.setDouble(1, 500);
//            pstmt1.setInt(2, 1);
//            pstmt1.setInt(1, 500);
//            pstmt1.setInt(2, 2);
//
//            //执行sql
//            pstmt1.executeUpdate();
//            //手动制造一个异常
//            int i = 3 / 0;
//            pstmt2.executeUpdate();
//            //提交事务
//            conn.commit();
//        }catch(Exception e){
//            try{
//                if(conn!=null){
//                    conn.rollback();
//                }
//            }catch(SQLException e1){
//                e1.printStackTrace();
//            }
//            e.printStackTrace();
//        }finally {
//            JDBCUtils.close(pstmt1,conn);
//            JDBCUtils.close(pstmt2,conn);
//        }
//    }


          Scanner sc = new Scanner(System.in);
          
           //登陆
        
//        System.out.println("请输入用户名:");
//        String username = sc.nextLine();
//        System.out.println("请输入密码");
//        String password = sc.nextLine();
//        //调用方法
//        boolean flag = new jdbc_test().login(username,password);
//        if(flag){
//            System.out.println("登陆成功");
//        }
//        else{
//            System.out.println("登陆失败");
//        }
        
        
        //注册
        
        System.out.println("请输入用户名:");
        String username = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();
        System.out.println("请确认密码:");
        String repassword = sc.nextLine();
        if (password.equals(repassword)) {
            //调用方法
            boolean flag = new jdbc_test().register(username, password);
            if (flag) {
                System.out.println("注册成功!");
            } else {
                System.out.println("注册失败!");
            }
        } else {
            System.out.println("两次输入的密码不同!");
        }
    }
	//注册方法
    public boolean register(String username,String password) throws SQLException {
        boolean a=false;
        if(username == null || password == null) {
            return a;
        }
        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;
        try {
            conn = JDBCUtils.getConnection();         
            //定义sql
            String sql1 = "select * from a1 where name = '"+username+"'";
            //获取执行sql对象
            stmt = conn.createStatement();
            //执行查询
            rs=stmt.executeQuery(sql1);
            //定义sql
            String sql = "INSERT INTO a1 (name,password) VALUES ('"+username+"','"+password+"')";
            //获取执行sql对象
            stmt = conn.createStatement();
            //执行插入
            if(stmt.executeUpdate(sql)>=1)
                a=true;
            return a;
        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            JDBCUtils.close(stmt,conn);
            JDBCUtils.close(rs,stmt,conn);
        }
        return a;
    }

    //登陆方法
    public boolean login(String username,String password) throws SQLException {
        if(username==null||password==null){
            return false;
        }
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try{
            conn = JDBCUtils.getConnection();
            //定义sql
            String sql ="select * from a1 where name = '"+username+"' and password = '"+password+"'";
            //获取执行sql对象
            stmt = conn.createStatement();
            //执行查询
            rs = stmt.executeQuery(sql);
            return rs.next();
        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            JDBCUtils.close(rs,stmt,conn);
        }
        return false;
    }
}

jdbc.properties

url=jdbc:mysql://localhost:3306/a?useSSL=false
user=root
password=123456
driver=com.mysql.jdbc.Driver

JDBCtils

    //读取文件,只需读取一次即可拿到这些值,使用静态代码块
    static {
        try {
            //1.创建Properties集合类
            Properties pro=new Properties();
            //获取src路径下文件————>ClassLoader 类加载器
            ClassLoader classLoader=JDBCUtils.class.getClassLoader();
            URL res=classLoader.getResource("jdbc.properties");
            String path = res.getPath();
            System.out.println(path);

            //2.加载文件
            pro.load(new FileReader(path));

            //3.获取数据,赋值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            psssword = pro.getProperty("password");
            driver = pro.getProperty("driver");

            //4.注册驱动
            Class.forName(driver);


        }catch (IOException e){
            e.printStackTrace();
        }catch (ClassNotFoundException e1){
            e1.printStackTrace();
        }
    }

    //连接
    public static Connection getConnection() throws SQLException{
        return DriverManager.getConnection(url,user,psssword);
    }

    //释放资源
    public static void close(ResultSet rs,Statement stmt,Connection conn) throws SQLException{  //ResultSet 结果集
        if(rs != null){
            rs.close();
            stmt.close();
        }
        if (stmt != null){
            stmt.close();
        }
        if(conn != null){
            conn.close();
        }
    }

    public static void close(Statement stmt,Connection conn) throws SQLException{
        if (stmt != null){
            stmt.close();
        }
        if(conn != null){
            conn.close();
        }
    }
}

运行结果

回滚

在这里插入图片描述
会将运行过程中的错误代码列出,并且不会再执行。

登陆

在这里插入图片描述

注册

在这里插入图片描述

展开阅读全文

Sharding-JDBC分库分表从入门到精通

09-26
课程简介 随着互联网的发展,软件的规模在逐渐变大,用关系型数据库如何存储和处理大规模的业务数据成为企业面临的挑战, 关系型数据库作为OLTP(联机事务处理过程)系统的首选毋庸置疑,但是关系型数据面对大规模数据的处理有其先天的不足,比如单表存储上千万数据时便会出现不同程度的处理速度缓慢问题,如何解决?分库分表技术就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。本课程将系统的讲解分库分表技术。 课程价值 分库分表技术是为解决关系型数据库存储和处理大规模数据的问题,主要应用于OLTP系统,它与应用于OLAP(联机分析处理)的大数据技术有不同的应用场景,本课程本着从解决生产实际问题出发,讲授分库分表技术的解决方案,包括:垂直分库、垂直分表、水平分库、水平分表、读写分离,涵盖了分库分表的各种方案,并且深入讲解Sharding-JDBC框架的原理及使用方法,通过学习本课程可以快速应用到生产实践中。 课程优势 本课程不仅讲解多种有效的分库分表的解决方案,还深入讲解了Sharding-JDBC框架的原理和使用方法,Sharding-JDBC是一套轻量级的对代码零侵入的框架,在生产中有广泛的使用。本课程从思想原理、技术框架、案例实操三个方面去学习,可以快速的将分库分表技术应用到生产实践中,解决大数据存储与处理的问题。
©️2020 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值