当前位置: 首页 > news >正文

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);    }   }

转载于:https://www.cnblogs.com/java-lzm/p/4368000.html

相关文章:

  • VB - 变量
  • 图片压缩,别问我是谁,请叫我雷锋
  • C++单例模式实例
  • Action(8):Error -27728:Step download timeout(120 seconds)has expired when downloading
  • 千位数减百位数不退位 区间代换
  • C# 第三次作业
  • Maven常用命令总结
  • ecshop开发日志之手机端虚拟商品自动发货
  • C++ 指针悬挂和赋值操作符的重载,拷贝构造函数实现
  • WCF-终结点之消息路由示例
  • Android学习笔记(四六):互联网通信-文件下载
  • 封装WebService的APM为Async、Await模式利于Asp.Net页面调用
  • Solr入门之SolrServer实例化方式
  • matlab mex 小o -o 出错
  • linux下的权限控制
  • 【译】JS基础算法脚本:字符串结尾
  • 【Linux系统编程】快速查找errno错误码信息
  • 【译】理解JavaScript:new 关键字
  • css系列之关于字体的事
  • docker-consul
  • java8 Stream Pipelines 浅析
  • Java反射-动态类加载和重新加载
  • Netty源码解析1-Buffer
  • PHP 的 SAPI 是个什么东西
  • vue 个人积累(使用工具,组件)
  • Web标准制定过程
  • 程序员最讨厌的9句话,你可有补充?
  • 从setTimeout-setInterval看JS线程
  • 关于for循环的简单归纳
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 浅谈Golang中select的用法
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 阿里云ACE认证学习知识点梳理
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #include<初见C语言之指针(5)>
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (c语言)strcpy函数用法
  • (八十八)VFL语言初步 - 实现布局
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (多级缓存)多级缓存
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net FrameWork简介,数组,枚举