java自学之路-jdbc
Mysql-jdbc
1、JDBC 加载流程
- 加载驱动 Driver
- 注册驱动 DriverManager
- 获取链接 Connection
- 获取语句对象statment
- 执行sql语句
- 关闭对象 connenction statment 释放资源
Java//1Driver driver = new com.mysql.cj.jdbc.Driver();//2DriverManager.registerDriver(driver);//合并1和2 反射加载静态代码块//Class.forName("com.mysql.cj.jdbc.Driver"); //3connection = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=false&useUnicode=true" + "&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true", "root", "root"); //4 statement = connection.createStatement();//5String sql = "insert into dept values(52, '教学部', '北京')";String sql = "delete from dept where DEPTNO=52";int i = statement.executeUpdate(sql); //增加删除改查System.out.println(i); //6statement.close();connection.close(); |
---|
2、增删改
JavaString sql = "delete from dept where DEPTNO=52";int i = statement.executeUpdate(sql); //增加删除改查 |
---|
3、查
JavaString sql = "select * from emp";ResultSet resultSet = statement.executeQuery(sql);resulSet.next();游标resulSet.getInt(1) //值可以是1-n, 也可以是字段名称(建议使用这个)resulSet.getString()..。等其他类型//通过游标 next()String sql = "select * from emp";ResultSet resultSet = statement.executeQuery(sql);List<Emp> list = new ArrayList();while (resultSet.next()){ Emp emp = new Emp(); emp.setEMPNO(resultSet.getInt("empno")); emp.setENAME(resultSet.getString("ename")); emp.setMGR(resultSet.getString("mgr")); emp.setHIREDATE(resultSet.getDate("hiredate")); emp.setSAL(resultSet.getDouble("sal")); emp.setCOMM(resultSet.getDouble("comm")); emp.setDEPTNO(resultSet.getInt("deptno")); list.add(emp);} |
---|
4、sql注入 预编译
预编译吧 单引号 \'
Java String sql = "select * from emp where empno = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); //预编译对象 设置参数 preparedStatement.setInt(1,73691); //运行 ResultSet resultSet = preparedStatement.executeQuery(); resultSet.next(); System.out.println(resultSet.getInt(1)); |
---|
5、批量处理
Javafor(i=0;i<1000; i++){preparedStatement.setInt(1,73691);if(i%1000 == 0){ //满一千条直接执行 防止内存存入太多数据 preparedStatement.executeBathc(); //清除上面1000条数据 preparedStatement.ClearBatch();}} |
---|
6、事务
Java//设置事务手动提交connect.setAutoCommit(false);//异常了可以使用回滚 在catch中connect.rollback()//无论是否回滚事务都要提交 建议在finally 在关闭资源之前提交connect.commit();###高级操作 回滚点数据在100插入异常 我们在99以上的提交。 |
---|
后面会更新 jdbc 加入线程池(自己实现线程池等一些注意事项)。。。。。。
发布于 2023-02-27 00:21
・IP 属地福建