• Swing学习总结


       (转载)

    花了差不多四天时间学习了Swing做的图书管理系统,系统虽然不大,但对我来说做起来还是有一定困难的。

    小锋老师讲的还是很不错的,重点、难点都讲得还是很清楚,条理很清晰。   通过视频学习我也受益匪浅。  

    对于一个系统的开发过程我有了更清楚的认识,不管多大的系统都要思路清晰,都要一步一步来,不管是从DAO层开始,还是 从View层开始,从每一个功能开始,一步一步地实现。    对于JDBC我有更深的理解,增、删、改、查操作更熟练   

    DAO层的方法根据什么判断返回类型?应该怎么去写?  

    DAO层主要是操作数据的。。  加入是添加,更新,删除  返回的是Int  实际操作数据条数  如果是查询  返回的是List集合,或者ResultSet    

    1.添加数据  

    String sql = "insert into t_book values(null,?,?,?,?,?,?)";  

     PreparedStatement pstmt = conn.prepareStatement(sql);   

    pstmt.setString(1, book.getBookName());   

    ........  

     return pstmt.executeUpdate();

     2.删除数据  

    public int bookDelete(Connection conn,String id) throws SQLException{   String sql = "delete from t_bookType where id = ?";  

     PreparedStatement pstmt = conn.prepareStatement(sql);  

     pstmt.setString(1, id);   return pstmt.executeUpdate();  }

     3.修改数据  public int modifyBookType(Connection conn,BookType bookType) throws SQLException{  

     String sql = "update t_bookType set bookType = ? , bookTypeDesc = ? where id = ?";  

     PreparedStatement pstmt = conn.prepareStatement(sql);  

     pstmt.setString(1, bookType.getBookType());  

     pstmt.setString(2, bookType.getBookTypeDesc());   

    pstmt.setInt(3, bookType.getId());   

    return pstmt.executeUpdate();   }  

    4.查询数据  public ResultSet bookReseach(Connection conn,Book book) throws SQLException{   

    StringBuffer sb = new StringBuffer("select * from t_book b,t_bookType bt where b.bookTypeId=bt.id");   

    if(StringUtil.isNotEmpty(book.getBookName())){    

    sb.append(" and b.bookName like '%"+book.getBookName()+"'");   }  

     if(StringUtil.isNotEmpty(book.getAuthor())){   

     sb.append(" and b.autor like '%"+book.getAuthor()+"'");   }  

     if(StringUtil.isNotEmpty(book.getSex())){   

     sb.append(" and b.sex = '"+book.getSex()+"'");   }   

    if(book.getBookTypeId()!=-1){   

     sb.append(" and b.bookTypeId ="+book.getBookTypeId());   }   

    PreparedStatement pstmt = conn.prepareStatement(sb.toString());   

    return pstmt.executeQuery();  }  

    ///条件查询  

     StringBuffer sb = new StringBuffer("select * from t_bookType");  

     if(StringUtil.isNotEmpty(bookType.getBookType())){  

      sb.append(" and bookType like '%"+bookType.getBookType()+"%'");   }   

    PreparedStatement pstmt = conn.prepareStatement(sb.toString().replace("and", "where"));

      return pstmt.executeQuery();  

    //这个算法不错,非常感谢

     5.向JTable中填数据  

    private void fillBookTable(Book book) {   

    DefaultTableModel dtm = (DefaultTableModel) tabBook.getModel();   

    dtm.setRowCount(0);   Connection conn = null;   

    try {    conn = dbUtil.getCon();    

    ResultSet rs = bookDao.bookReseach(conn, book);    

    while (rs.next()) {     Vector vector = new Vector();     

    vector.add(rs.getInt("id"));    

     vector.add(rs.getString("bookName"));    

     vector.add(rs.getString("autor"));   

      vector.add(rs.getString("sex"));   

      vector.add(rs.getString("bookDesc"));  

       vector.add(rs.getString("bookType"));     

    vector.add(rs.getFloat("price"));   

      dtm.addRow(vector);    }   } catch (SQLException e) {    e.printStackTrace();   } finally {    try {     dbUtil.close(conn);    } catch (SQLException e) {     e.printStackTrace();    }   }  }

     6.控件Combo box中item项中填数据   

    private void fillBookType() {    Connection conn = null;    

    BookType bookType = null;    

    try {     conn = dbUtil.getCon();     

    ResultSet rs = bookTypeDao.bookTypeResearch(conn, new BookType());   

      bookType = new BookType();     

    bookType.setBookType("请选择...");     

    bookType.setId(-1);    

     this.jcbBookType.addItem(bookType);     

    while (rs.next()) {      

    bookType = new BookType();      

    bookType.setId(rs.getInt("id"));    

      bookType.setBookType(rs.getString("bookType"));     

     this.jcbBookType.addItem(bookType);     }    } catch (SQLException e) {     e.printStackTrace();    } finally {     try {      dbUtil.close(conn);     } catch (SQLException e) {      e.printStackTrace();     }    }

      }

     7.JTable中Mouse的mousePressed事件  

     private void tabBookTypeMousePressed(java.awt.event.MouseEvent evt) {    

    int row = tabBookType.getSelectedRow();  

      this.txtId.setText((String) tabBookType.getValueAt(row, 0));   

     this.txtBookT.setText((String) tabBookType.getValueAt(row, 1));   

     this.txtBookTypeDesc.setText((String) tabBookType.getValueAt(row, 2));   }

     8.Combo box读数据并显示bookType    

    String bookType = (String) tabBook.getValueAt(row, 5);    

    int n = this.jcbBookType.getItemCount();   

     for (int i = 0; i < n; i++) {   

      BookType item = (BookType) this.jcbBookType.getItemAt(i);     

    if (item.getBookType().equals(bookType)) {     

     this.jcbBookT.setSelectedIndex(i);     }    }  

    9.JRadioButton读数据据并显示    

    String sex = (String) tabBook.getValueAt(row, 3);    

    if ("男".equals(sex)) {   

      this.jrbMan1.setSelected(true);    }

    else if ("女".equals(sex)) {   

      this.jrbWoman1.setSelected(true);    }

    在跟着练习的过程中也遇到很多问题,比如:空指针异常、越界等问题。 我也学会了解决问题方法,对于这些问题,要进入Debug模式一步一步去调试,看变量的值,从而找到问题关键。

    还有就是学会了“偷懒的方法”,对于一些经常要用的方法进行封装重复利用  

    1.对于数据库注册、连接、关闭封装成DbUtil类  

    2.对于重置方法:  

     private void resetValue() {   

     this.txtId.setText("");    

    this.txtAutor.setText("");   

     this.txtBookDesc.setText("");   

     this.txtBook.setText("");   

     this.txtPrice.setText("");  

      this.jrbMan1.setSelected(true);   

     if(this.jcbBookT.getItemCount()>0){     this.jcbBookT.setSelectedIndex(0);    }   }

  • 相关阅读:
    HttpModule,HttpHandler,HttpHandlerFactory
    IHttpModule实现URL重写
    HttpModule与HttpHandler详解
    IHttpModule接口
    VS中新建网站和新建项目web应用程序的区别?(实际应用总结一点)
    slf4j简介
    SQL条件表达式
    Windows命令查看文件MD5
    Final对象
    Seasar2框架:AOP
  • 原文地址:https://www.cnblogs.com/java-lzm/p/4368000.html
Copyright © 2020-2023  润新知