1.数据访问层:com.java.dao;
在之前建好的BookDao类里面增加修改和删除的方法:
//图书删除方法
public int deleteBook(Connection con,String id)throws Exception{
String sql="delete from t_book where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, id);
return pstmt.executeUpdate();
}
//图书修改方法
public int updateBook(Connection con,Book book)throws Exception{
String sql="update t_book set bookName=?,author=?,sex=?,price=?,bookDesc=?,bookTypeId=? where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, book.getBookName());
pstmt.setString(2, book.getAuthor());
pstmt.setString(3, book.getSex());
pstmt.setFloat(4, book.getPrice());
pstmt.setString(5, book.getBookDesc());
pstmt.setInt(6, book.getBookTypeId());
pstmt.setInt(7, book.getId());
return pstmt.executeUpdate();
}
2.视图层:com.java.view;
然后在Book_Manage_InterFrm类视图上面写图书类别删除的界面:
先在界面上添加一个JPanel控件,然后添加其他控件:
然后进行重命名:
编号框命名为:id_Txt;
图书名称命名为:bookName_Txt;
作者性别男命名为:man_Jrb;女命名为:woman_Jrb;
价格命名为:price_Txt;
图书作者命名为:author_Txt;
图书类别命名为:bookType_Txt;
图书描述命名为:bookDesc_Txt;
然后设置 一下边框代码;
首先写一个行点击事件,就是在bookTable上点击相关的书籍,下方的表单会出现对应的详细信息:
(1)找到Book_Manage_InterFrm视图,
右键点击scrollPane里面的bookTable->Add event handler->mouse->mousePressed;
(2)这时系统会在Source里面生成对应的鼠标点击事件:
这里我们在MousePressed()方法里面写一个bookTableMousePressed(met)方法,
将实现点击的代码写在这个方法里面,并将方法的定义写在系统自动生成的bookTableMousePressed()方法的外部;
//表格行点击事件方法
private void bookTableMousePressed(MouseEvent met) {
//获取选中的行,返回行号
int row=this.bookTable.getSelectedRow();
//获取第row行,第1列的值
this.id_Txt.setText((String)bookTable.getValueAt(row, 0));
//获取第row行,第2列的值
this.bookName_Txt.setText((String)bookTable.getValueAt(row, 1));
//获取第row行,第3列的值
this.author_Txt.setText((String)bookTable.getValueAt(row, 2));
//获取性别
String sex=(String)bookTable.getValueAt(row, 3);
//人工判断
if("男".equals(sex)){
this.man_Jrb.setSelected(true);
}else if("女".equals(sex)){
this.woman_Jrb.setSelected(true);
}
//获取第row行,第5列的值
this.price_Txt.setText((Float)bookTable.getValueAt(row, 4)+"");
//获取第row行,第6列的值
this.bookDesc_Txt.setText((String)bookTable.getValueAt(row, 5));
//获取第row行,第7列的值
String bookTypeName=(String)this.bookTable.getValueAt(row, 6);
//获取下拉框的行数
int n=this.bookType_Jcb.getItemCount();
//开始遍历下拉框的所有内容
for(int i=0;i
这里注意,我们在写修改下拉框时,要在相应的地方加上相应的代码,比如:
这时我们可以测试一下,点击列表里的相关书籍,下方的表格会自动出来对应的信息:
图书修改:
先在“修改”按钮上添加点击事件处理:
(1)找到Book_Manage_InterFrm视图,右击修改按钮->Add event handler->action->actionPerformed;
系统会自动在Source里面生成对应的方法:
这里我们在actionPerformed()方法里面写一个bookUpdateActionEvent(e)方法,
将实现图书类别修改功能的代码写在这个方法里面,并将方法的定义写在系统自动生成的actionPerformed()方法的外部;
//图书修改事件方法
private void bookUpdateActionPerformed(ActionEvent evt) {
//获取界面信息
String id=this.id_Txt.getText();
String bookName=this.bookName_Txt.getText();
String author=this.author_Txt.getText();
String price=this.price_Txt.getText();
String bookDesc=this.bookDesc_Txt.getText();
//判断id是否为空,若为空,则不能修改
if(StringUtil.isEmpty(id)){
JOptionPane.showMessageDialog(null, "请选择要修改的记录!");
return;
}
//判断其他信息是否为空
if(StringUtil.isEmpty(bookName)){
JOptionPane.showMessageDialog(null, "图书名称不能为空!");
return;
}
if(StringUtil.isEmpty(author)){
JOptionPane.showMessageDialog(null, "作者名称不能为空!");
return;
}
if(StringUtil.isEmpty(price)){
JOptionPane.showMessageDialog(null, "价格不能为空!");
return;
}
//获取性别信息
String sex="";
if(man_Jrb.isSelected()){
sex="男";
}else if(woman_Jrb.isSelected()){
sex="女";
}
//获取图书类别id
BookType bookType=(BookType) bookType_Jcb.getSelectedItem();
int bookTypeId=bookType.getId();
//进行封装
Book book=new Book(Integer.parseInt(id), bookName, author, sex, Float.parseFloat(price), bookTypeId, bookDesc);
//进行添加操作,数据库连接
Connection con=null;
try {
con=dbUtil.getCon();
int addNum=bookDao.updateBook(con,book);
if(addNum==1){
JOptionPane.showMessageDialog(null, "图书修改成功!");
resetValue();
this.fillTable(new Book());
}else{
JOptionPane.showMessageDialog(null, "图书修改失败!");
}
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "图书修改失败!");
} finally{
try {
dbUtil.close(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}
这里我们需要提前写一个resetValue()方法 ,起重置表单的作用;
即点击修改之后,表单要清空!
(2)进行测试;
数据已修改成功!
图书删除:
(1)找到BookType_Manage_InterFrm视图,右击删除按钮->Add event handler->action->actionPerformed;
系统会自动在Source里面生成对应的方法:
这里我们在actionPerformed()方法里面写一个bookTypeDeleteActionEvent(e)方法,
将实现图书类别修改功能的代码写在这个方法里面,并将方法的定义写在系统自动生成的actionPerformed()方法的外部;
/**
* 图书删除事件方法
* @param evt
*/
private void bookDeleteActionPerformed(ActionEvent evt) {
//获取界面信息
String id=id_Txt.getText();
//判断id是否为空,若为空,则不能删除
if(StringUtil.isEmpty(id)){
JOptionPane.showMessageDialog(null, "请选择要删除的记录!");
return;
}
int n=JOptionPane.showConfirmDialog(null, "确定要删除该记录吗?");
if(n==0){
Connection con=null;
try {
con=dbUtil.getCon();
int deleteNum=bookDao.deleteBook(con, id);
if(deleteNum==1){
JOptionPane.showMessageDialog(null, "删除成功!");
this.resetValue();
this.fillTable(new Book());
}else{
JOptionPane.showMessageDialog(null, "删除失败!");
}
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "删除失败!");
}finally{
try {
dbUtil.close(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
(2)进行测试;
操作时候结果为:
可以看到操作成功!