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     }
原文地址:https://www.cnblogs.com/dongye/p/3104287.html