Mysql————JDBC连接数据库

    科技2022-08-06  99

    JDBC连接数据库

    JDBC本质连接数据库的六大步骤模拟用户登录JDBC中的事务提交JDBC中的悲观锁与行级锁

    JDBC本质

    JDBC本质是一套接口

    连接数据库的六大步骤

    下载驱动,配置环境注册驱动(连接那个品牌的数据库) 两种方法: //方法一:直接构造类 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/bjpowernode?serverTimezone=GMT"; String user ="root"; String password = "****"; coon = DriverManager.getConnection(url,user,password);

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

    stmt = coon.createStatement(); 执行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?"修改成功":"失败"); 处理查询结果集 (只有第五步执行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); } 释放资源 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();

    JDBC中的事务提交

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

    JDBC中的悲观锁与行级锁

    Processed: 0.017, SQL: 8