当前位置:Gxlcms > 数据库问题 > 图书管理系统总结——数据库操纵(二)

图书管理系统总结——数据库操纵(二)

时间:2021-07-01 10:21:17 帮助过:28人阅读

* 图书信息查询 * @param con * @param book * @return * @throws Exception */ public ResultSet list(Connection con,Book book)throws Exception{ StringBuffer sb=new StringBuffer("select * from t_book b,t_bookType bt where b.bookTypeId=bt.id"); //两张表关联查询,有bookTypeID才能查询 if(StringUtil.isNotEmpty(book.getBookName())){ sb.append(" and b.bookName like ‘%"+book.getBookName()+"%‘"); }//动态添加查询条件 if(StringUtil.isNotEmpty(book.getAuthor())){ sb.append(" and b.author like ‘%"+book.getAuthor()+"%‘"); } if(book.getBookTypeId()!=null && book.getBookTypeId()!=-1)//“请选择”的ID为-1 { sb.append(" and b.bookTypeId="+book.getBookTypeId()); } PreparedStatement pstmt=con.prepareStatement(sb.toString()); return pstmt.executeQuery();//执行,返回结果集 }

返回的Resultset是结果集,比如可以给下拉框初始化。结果集使用方法是用一个游标将集合与一条记录架起桥梁:

ResultSet rs=bookTypeDao.list(con, new BookType());//得到书种类结果集
            //添加第一项ID=-1
            bookType=new BookType();
            bookType.setBookTypeName("请选择...");
            bookType.setId(-1);//请选择的ID为-1
            this.bookTypeJCB.addItem(bookType);
            while(rs.next()){//rs一定要先next()一次,指向第一条记录
                bookType=new BookType();
                bookType.setId(rs.getInt("id"));
                bookType.setBookTypeName(rs.getString("bookTypeName"));
                this.bookTypeJCB.addItem(bookType);//添加项

二、数据插入

为了防止SQL注入,这里采用预编译方式。

    /**
     * 图书添加
     * @param con
     * @param book
     * @return
     * @throws Exception
     */
    public int add(Connection con,Book book)throws Exception//返回影响几条记录
    {
        String sql="insert into t_book values(null,?,?,?,?,?,?,?,?)";//注意和自己创建的表格属性对应
        PreparedStatement pstmt=con.prepareStatement(sql);//创建对象,得到SQL语句,先将带参数语句送入DBMS,防止SQL注入
        pstmt.setString(1, book.getBookName());//传递参数,填问号的值
        pstmt.setString(2, book.getAuthor());
        pstmt.setString(3, book.getSex());
        pstmt.setFloat(4, book.getPrice());
        pstmt.setInt(5, book.getBookTypeId());
        pstmt.setString(6, book.getBookDesc());
        pstmt.setInt(7, book.getBookNum());
        pstmt.setString(8, book.getPublisher());        
        return pstmt.executeUpdate();//执行SQL语句,返回影响的记录数目
    }

三、数据修改:

/**
     * 图书信息修改
     * @param con
     * @param book
     * @return
     * @throws Exception
     */
    public int update(Connection con,Book book)throws Exception
    {
        String sql="update t_book set bookName=?,author=?,sex=?,price=?,bookDesc=?,bookTypeId=? where id=?";//SQL修改语句
        PreparedStatement pstmt=con.prepareStatement(sql);
        pstmt.setString(1, book.getBookName());
        pstmt.setString(2, book.getAuthor());
        pstmt.setString(3, book.getSex());
        pstmt.setFloat(4, book.getPrice());
        pstmt.setString(5, book.getBookDesc());
        pstmt.setInt(6, book.getBookTypeId());
        pstmt.setInt(7, book.getId());
        return pstmt.executeUpdate();//返回值是影响的记路数目
    }

四、数据删除:

    /**
     * 图书信息删除
     * @param con
     * @param id
     * @return
     * @throws Exception
     */
    public int delete(Connection con,int id)throws Exception
    {
        String sql="delete from t_book where id=?";
        PreparedStatement pstmt=con.prepareStatement(sql);
        pstmt.setInt(1, id);
        return pstmt.executeUpdate();//返回值是删除的记路数目
    }
    

 

图书管理系统总结——数据库操纵(二)

标签:ram   编译   属性   app   get   statement   typeid   into   date()   

人气教程排行