Mysql————JDBC连接数据库

JDBC本质

JDBC本质是一套接口

连接数据库的六大步骤

  1. 下载驱动,配置环境注册驱动(连接那个品牌的数据库)
    两种方法:
 //方法一:直接构造类
            DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
//方法二:利用反射机制           
			Class.forName("com.mysql.cj.jdbc.Driver");
  1. 获取连接(表示JVM与数据库的进程之间的通道打开了,属于进程之间的通信,重量级,用完后要关闭通道)
String url = "jdbc:mysql://127.0.0.1:3306/bjpowernode?serverTimezone=GMT";
            String user ="root";
            String password = "****";
            coon = DriverManager.getConnection(url,user,password);

注:JDK8.0后面要在资源名后面加上一个时区即
?serverTimezone=GMT
3. 获取操作的数据库对象(专门执行sql语句的对象)

 stmt = coon.createStatement();
  1. 执行sql语句(DQL,DML…)
			//插入数据
            String sql = "insert into dept(deptno,dname,loc) values(70,'财务部','江西')";
            int count = stmt.executeUpdate(sql);
            System.out.println(count==1?"插入成功":"失败");

            //修改数据
            String sql1 ="update dept set dname ='销售部',loc='天津' where deptno = 20";
            int count1 = stmt.executeUpdate(sql1);
            System.out.println(count1==1?"修改成功":"失败");
  1. 处理查询结果集 (只有第五步执行select语句时才有该步骤)
//查询结果处理集
            String sql2 = "select * from dept";
            rs =stmt.executeQuery(sql2);
            while (rs.next()){
                int deptno = rs.getInt(1);
                String dname =rs.getString(2);
                String loc = rs.getString(3);
                System.out.println(deptno+",\t"+dname+",\t"+loc);
            }
  1. 释放资源
    rs.close();
    stmt.close();
    coon.close();

模拟用户登录

1,使用配置文件来读取数据,实现连接
使用ResourceBundle类来完成

//绑定配置文件
            ResourceBundle bundle = ResourceBundle.getBundle("JDBC/Mysql");
            String driver = bundle.getString("driver");
            String url = bundle.getString("url");
            String user = bundle.getString("user");
            String password = bundle.getString("password");

2,解决sql注入问题
用PreparedStatement来代替Statement

//3,获取预编译操作对象,防止sql注入问题
            String sql = "select * from t_user where LoginName=? and LoginPwd =? ";
            ps = coon.prepareStatement(sql);
            //给占位符传值
            ps.setString(1,userLoginInfo.get("LoginName"));
            ps.setString(2,userLoginInfo.get("LoginPwd"));
            //4,执行sql语句
            rs = ps.executeQuery();

完整代码

    public static void main(String[] args) {
        Connection coon = null;
        Statement stmt = null;
        ResultSet rs = null;
        //这里使用的是jar包是8.0的
        try {
        //第一步:下载驱动,配置环境注册驱动(连接那个品牌的数据库)
            //方法一:直接构造类
            DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
            //方法二:利用反射机制
            Class.forName("com.mysql.cj.jdbc.Driver");
        //第二步,获取连接(表示JVM与数据库的进程之间的通道打开了,属于进程之间的通信,重量级,用完后要关闭通道)
            String url = "jdbc:mysql://127.0.0.1:3306/work?serverTimezone=GMT";
            String user ="root";
            String password = "3333";
            coon = DriverManager.getConnection(url,user,password);
        //第三步:获取操作的数据库对象(专门执行sql语句的对象)
            stmt = coon.createStatement();
        //第四步:执行sql语句(DQL,DML…)
            //插入数据
/*            String sql = "insert into users(uid,uname,grade) value(66,'小红','二星')";
            int count = stmt.executeUpdate(sql);
            System.out.println(count==1?"插入成功":"失败");*/

            //查询结果集合
            String sql2 = "select * from users";
            rs = stmt.executeQuery(sql2);
            while (rs.next()){
                int uid = rs.getInt(1);
                String uname =rs.getString(2);
                String grade = rs.getString(4);
                System.out.println(uid+",\t"+uname+",\t"+grade);
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(coon != null){
                try {
                    coon.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

JDBC中的事务提交

1,开启事务 setAutoCommit(false)
2,提交事务 commit();
3,回滚事务 coon.rollback();

JDBC中的悲观锁与行级锁

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值