会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132382个问题
JAVA 全系列/第三阶段:数据库编程/MySQL数据库的使用 346楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 347楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 348楼

老师运行结果有点不对呢?

/**
 * 分页查询测试类
 */
public class PageTest {
    /**
     * 分页查询Usera
     */
    public Page<Users> selectPage(Page page){
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        List<Users> list=new ArrayList<>();
        try {
            //获取连接对象
            conn= JdbcUtils.getConnection();
            //创建PreparedStatement对象
            ps = conn.prepareStatement("select * from users limit ?,?");
            //绑定m参数  m的值 = (当前页-1)*每页显示的条数//绑定m参数 m的值=(当前页-1) * 每页显示的条数
            ps.setInt(1,(page.getCurrentPage()-1)*page.getPageSize());
            //绑定n参数 n的值为每页显示的条数
            ps.setInt(2,page.getPageSize());
            //执行查询
            rs=ps.executeQuery();
            //处理结果集
            while (rs.next()){
                //完成ORM映射
                Users users=new Users();
                users.setUserid(rs.getInt("userid"));
                users.setUsername(rs.getString("username"));
                users.setUserage(rs.getInt("userage"));
                list.add(users);
            }
            //将结果集存放到Page对象中
            page.setResult(list);
            //查询总条数
            ps = conn.prepareStatement("select count(*) from users");
            //执行查询
            rs=ps.executeQuery();
            while (rs.next()){
                //总条数
                int count=rs.getInt(1);
                //保存总条数
                page.setTotalCount(count);
                //换算总页数=总条数/每页显示的条数  向上取整
                int totalPage=(int)Math.ceil(1.0*count/page.getPageSize());
                //保存总页数
                page.setTotalCount(totalPage);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JdbcUtils.closeResourse(rs,ps,conn);
        }
        return page;
    }

    public static void main(String[] args) {
        PageTest pt=new PageTest();
        Page page=new Page();
        page.setCurrentPage(1);
        page.setPageSize(2);
        Page p=pt.selectPage(page);
        System.out.println("总条数: "+p.getTotalCount());
        System.out.println("总页数: "+p.getTotalPage());
        System.out.println("当前页: "+p.getCurrentPage());
        System.out.println("每页显示的条数: "+p.getPageSize());
        List<Users> list=p.getResult();
        for (Users user:list){
            System.out.println(user.getUserid()+" "+user.getUsername()+" "+user.getUserage());
        }
    }
}

2.png

JAVA 全系列/第三阶段:数据库编程/JDBC技术 349楼

怎么出现了错误呢?

/**
 * 根据影片ID查询影片信息
 * @param movieid
 */
public void selectMovieById(int movieid){
    Connection conn =null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    try {
        //获取连接
        conn= JdbcUtils.getConnection();
        //创建PreparedStatement对象
        ps=conn.prepareStatement("select * from movie where movieid=?");
        //绑定参数
        ps.setInt(1,movieid);
        //执行SQL
        rs = ps.executeQuery();
        while (rs.next()){
            int id=rs.getInt("movieid");
            String name = rs.getString("moviename");
            System.out.println(id+" "+name);
            //获取Blob类型数据
            Blob blob=rs.getBlob("poster");
            //获取能够从Blob类型的列中读取数据的IO流
            InputStream is=blob.getBinaryStream();
            //创建文件输出字节流对象
            OutputStream os = new FileOutputStream(id+"_"+name+".jpg");                //操作流完成文件的输出处理
            byte[] buff=new byte[1024];
            int len;
            while ((len=is.read(buff))!=-1){
                os.write(buff,0,len);
            }
            os.flush();
            is.close();
            os.close();
        }
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        JdbcUtils.closeResource(rs,ps,conn);
    }
}

6.png

JAVA 全系列/第三阶段:数据库编程/JDBC技术 351楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 352楼

我的第一次运行之后就出现了1000条数据呢?

public void addBatch2(){
        Connection conn=null;
        PreparedStatement ps=null;
        try {
            //创建连接
            conn= JdbcUtils.getConnection();
            //设置事务的提交方式,将自动提交修改为手动提交
            conn.setAutoCommit(false);
            //创建PreparedStatement对象
            ps=conn.prepareStatement("insert into users values(default ,?,?)");
            //参数绑定
            for (int i=0;i<=1000;i++){
                //绑定username
                ps.setString(1,"ITBZ"+i);
                //绑定年龄
                ps.setInt(2,20);

                //缓存SQL
                ps.addBatch();

                if (i%500==0){
                    //执行SQL
                    ps.executeBatch();

                    //清除缓存
                    ps.clearBatch();
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JdbcUtils.closeResource(ps,conn);
        }
    }

    public static void main(String[] args) {
        AddBatchTest at=new AddBatchTest();
        at.addBatch2();
    }
}

09.png

JAVA 全系列/第三阶段:数据库编程/JDBC技术 353楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 354楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 355楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 356楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 357楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 358楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 359楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术 360楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637