zoukankan      html  css  js  c++  java
  • Swing入门级小项目总结

    一.制作项目应该仔细分析需求,根据需求先建立数据库,数据表。比如BookManage小项目,要实现登录后管理图书和图书类型。所以应该有t_user, t_book,t_bookType三张表。

    二.分包 建好数据库后,根据项目分层 Model、DAO、View和Util工具层。其中Model用来存放数据(User,Book和BookType),Dao层(BookDao,BookTypeDao和UserDao)用来对数据库修改,添加,删除操作,View用来将模型显示出来。

    三.编写数据库连接代码(DbUtil),使用JDBC连接mysql数据库。

    JDBC 编程的步骤:  

    1.参数化

    1 private String dbUrl="jdbc:mysql://localhost:3306/db_book";
    2 private String dbUserName="root";
    3 private String dbPassword="root";
    4 private String jdbcName="com.mysql.jdbc.Driver";

    2.加载和注册数据库驱动

    Class.forName(jdbcName);

    3.连接数据库

    Connection con=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);

    4.操作数据库,执行SQL语句

    5.断开与数据库的连接(不要忘了)

    1     public void closeCon(Connection con) throws Exception{
    2         if(con!=null){
    3             con.close();
    4         }
    5     }

    四.界面布局 可以用小图片来美化。并且设置默认字体大小和格式。


    注意:连接数据库操作之后要记得断开连接,释放资源。

    重点:1.鼠标点击事件,获取选中的行用getSelectRow();

    2.表关联:建数据库表T_book 及关联T_bookType

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

    3.JTable

    a, new 一个DefaultTableModel假设名字取为 dtm

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

    b, dtm.setRowCount(0);

    c,从数据库中读出column names;(用ResultSet)

    con = dbUtil.getCon();
    ResultSet rs = bookDao.bookList(con, book);

    d,在表中添加列名

    while (rs.next()) {
        Vector v = new Vector();
        v.add(rs.getInt("id"));
        v.add(rs.getString("bookName"));
        v.add(rs.getString("author"));
        v.add(rs.getString("sex"));
        v.add(rs.getFloat("price"));
        v.add(rs.getString("bookDesc"));
        v.add(rs.getString("bookTypeName"));
        dtm.addRow(v); //添加每行记录
    }

    4.查询小算法

    1 public ResultSet bookTypeList(Connection con,BookType bookType) throws Exception{    
    2         StringBuffer sb=new StringBuffer("select * from t_bookType");
    3         if(StringUtil.isNotEmpty(bookType.getBookTypeName())){
    4             sb.append(" and bookTypeName like '%"+bookType.getBookTypeName()+"%'");
    5         }
    6         PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));
    7         return pstmt.executeQuery();
    8     }

    多表关联查询

     1 public ResultSet bookList(Connection con,Book book) throws Exception{
     2         StringBuffer sb = new StringBuffer("select * from t_book b,t_bookType bt where b.bookTypeId=bt.id");
     3         if(StringUtil.isNotEmpty(book.getBookName())){
     4             sb.append(" and b.bookName like '%"+book.getBookName()+"%'");
     5         }
     6         if(StringUtil.isNotEmpty(book.getAuthor())){
     7             sb.append(" and b.author like '%"+book.getAuthor()+"%'");
     8         }
     9         if(StringUtil.isNotEmpty(book.getSex())){
    10             sb.append(" and b.sex like '%"+book.getSex()+"%'");
    11         }
    12         
    13         if(book.getBookTypeId()!=-1){
    14             sb.append(" and b.bookTypeId ="+book.getBookTypeId());        }
    15         PreparedStatement pstmt = con.prepareStatement(sb.toString());
    16         return pstmt.executeQuery();
    17     }
  • 相关阅读:
    AWK只打印某个域后的所有域
    Apache配置文件httpd.conf内容翻译
    DOM事件类型详解
    DOM中的事件处理概览与原理的全面剖析
    JavaScript实战(带收放动画效果的导航菜单)
    (转)高性能JavaScript:加载和运行(动态加载JS代码)
    (转)网页性能管理详解
    (转)JavaScript-性能优化之函数节流(throttle)与函数去抖(debounce)
    你真的知道setTimeout是如何运行的吗
    用原生JS读写CSS样式的方法总结
  • 原文地址:https://www.cnblogs.com/dongye/p/3104287.html
Copyright © 2011-2022 走看看