一.制作项目应该仔细分析需求,根据需求先建立数据库,数据表。比如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 }