数据库系统原理——实验五

实验项目涉及数据库编程,使用嵌入式SQL和VB开发数据库应用程序,实现对图书信息的增删改查功能。通过连接MySQL数据库,创建了数据访问接口,并在VB界面中实现了操作。用户可以添加、删除、修改和查询图书,同时程序还提供了图书类型的管理。

实验项目名称:数据库编程

 

一、实验目的

熟悉并掌握嵌入式 SQL 编程、使用数据库访问接口技术实现对数据库的访问。

二、实验要求

熟悉使用嵌入式 SQL 编程访问数据库,熟悉 VB 中开发数据库应用程序的过程。

三、实验步骤

任务:设计一个小型的数据库应用程序

可利用现有的数据库,也可重新设计数据库。

要求实现数据的增加、删除、修改、查询的功能。

在报告中描述清楚使用的数据库、数据表及实现的功能(要求截图,并附代

码)。

注:数据库采用 SQLServer,编程工具任选,在实验报告中说明。

DbUtl.java

ackage com.HPioneer.util;

import java.sql.DriverManager;

import com.mysql.jdbc.Connection;

public class DbUtil {
//也可以这样
//private String dbUrl = "jdbc:mysql:///db_book";
    private String dbUrl = "jdbc:mysql://localhost:3306/db_book";
    private String dbUserName = "root";
    private String dbPassword = "123456";
    private String jdbcName = "com.mysql.jdbc.Driver";
    
    /**
     * 获取数据库连接
     * @return
     * @throws Exception
     */
    public Connection getCon()throws Exception{
        Class.forName(jdbcName);
        Connection con = (Connection) DriverManager.getConnection(dbUrl,dbUserName,dbPassword);//链接数据库
        return con;
        
    }
    
    /**
     * 关闭数据库连接
     * @param con
     * @throws Exception
     */
    public void closeCon (java.sql.Connection con)throws Exception {
        if(con!=null){
            con.close();
        }
    }
    
    /**
     * 
     * @param args
     */
    public static void main(String[] args) {
        DbUtil dbUtil = new DbUtil();
        try {
            dbUtil.getCon();
            System.out.println("数据库连接成功");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();    //在命令行打印异常信息在程序中出错的位置及原因。
            System.out.println("数据库连接");
        }
                
    }

    
}

package com.HPioneer.util;

import org.junit.Test;

import com.mysql.jdbc.StringUtils;

/**
 * 字符串工具类
 * @author H_Pioneer
 *
 */
public class StringUtil {
    /**
     * 判断是否为空
     * @param str
     * @return
     */
    
    public static boolean isEmpty(String str){
        if(str==null||"".equals(str.trim())){
            return true;
    }else{
        return false;
    }
    }
    
    /**
     * 判断不为空
     * @param str
     * @return
     */
    public static boolean isNotEmpty(String str){
        if(str!=null&&!"".equals(str.trim())){
            return true;
        }else{
        return false;
        }
    }
}
MainFrm.java                                                                

package com.HPioneer.view;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import java.awt.GridLayout;
import javax.swing.SpringLayout;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JDesktopPane;
import java.awt.Color;
import java.awt.SystemColor;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class MainFrm extends JFrame {

    private JPanel contentPane;
    private JDesktopPane table = null;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MainFrm frame = new MainFrm();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MainFrm() {
        setTitle("图书管理主界面");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        
        JMenu menu = new JMenu("基本数据维护");
        menu.setIcon(new ImageIcon(MainFrm.class.getResource("/images/base.png")));
        menuBar.add(menu);
        
        JMenu mnNewMenu = new JMenu("图书类别管理");
        mnNewMenu.setIcon(new ImageIcon(MainFrm.class.getResource("/images/bookTypeManager.png")));
        menu.add(mnNewMenu);
        
        JMenuItem menuItem = new JMenuItem("图书类别添加");
        menuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                BookTypeAddInterFrm bookTypeAddInterFrm = new BookTypeAddInterFrm();
                bookTypeAddInterFrm.setVisible(true);
                table.add(bookTypeAddInterFrm);
            }
        });
        menuItem.setIcon(new ImageIcon(MainFrm.class.getResource("/images/add.png")));
        mnNewMenu.add(menuItem);
        
        JMenuItem menuItem_2 = new JMenuItem("图书类别维护");
        menuItem_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                BookTypeManagerInterFrm bookTypeManagerInterFrm = new BookTypeManagerInterFrm();
                bookTypeManagerInterFrm.setVisible(true);
                table.add(bookTypeManagerInterFrm);
            }
        });
        menuItem_2.setIcon(new ImageIcon(MainFrm.class.getResource("/images/edit.png")));
        mnNewMenu.add(menuItem_2);
        
        JMenu mnNewMenu_1 = new JMenu("图书管理");
        mnNewMenu_1.setIcon(new ImageIcon(MainFrm.class.getResource("/images/bookManager.png")));
        menu.add(mnNewMenu_1);
        
        JMenuItem menuItem_1 = new JMenuItem("图书添加");
        menuItem_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                BookAddInterFrm bookAddInterFrm = new BookAddInterFrm();
                bookAddInterFrm.setVisible(true);
                table.add(bookAddInterFrm);
                
            }
        });
        menuItem_1.setIcon(new ImageIcon(MainFrm.class.getResource("/images/add.png")));
        mnNewMenu_1.add(menuItem_1);
        
        JMenuItem mntmNewMenuItem = new JMenuItem("图书维护");
        mntmNewMenuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                BookManageInterFrm bookManagerInterFrm = new BookManageInterFrm();
                bookManagerInterFrm.setVisible(true);
                table.add(bookManagerInterFrm);
            }
        });
        mntmNewMenuItem.setIcon(new ImageIcon(MainFrm.class.getResource("/images/edit.png")));
        mnNewMenu_1.add(mntmNewMenuItem);
        
        JMenuItem menuItem_3 = new JMenuItem("安全退出");
        menuItem_3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int result =JOptionPane.showConfirmDialog(null,"是否退出系统");
                
            }
        });
        menuItem_3.setIcon(new ImageIcon(MainFrm.class.getResource("/images/exit.png")));
        menu.add(menuItem_3);
        
        JMenu menu_1 = new JMenu("关于我们");

        menu_1.setIcon(new ImageIcon(MainFrm.class.getResource("/images/about.png")));
        menuBar.add(menu_1);
        
        JMenuItem mntmhpioneer = new JMenuItem("关于HPioneer");
        mntmhpioneer.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                 HPioneer1234InterFrm hPioneer1234InterFrm = new HPioneer1234InterFrm();
                    hPioneer1234InterFrm.setVisible(true);
                    table.add(hPioneer1234InterFrm);
            }
        });
        mntmhpioneer.setIcon(new ImageIcon(MainFrm.class.getResource("/images/userName.png")));
        menu_1.add(mntmhpioneer);
        contentPane = new JPanel();
        contentPane.setForeground(Color.BLUE);
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BorderLayout(0, 0));
        
        table = new JDesktopPane();     
        table.setBackground(Color.WHITE);
        contentPane.add(table);
        
        //设置Jrame最大化
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
}

增BookAddInterFrm.java
package com.HPioneer.view;

import java.awt.EventQueue;

import javax.swing.JInternalFrame;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.LineBorder;

import com.HPioneer.dao.BookDao;
import com.HPioneer.dao.BookTypeDao;
import com.HPioneer.model.Book;
import com.HPioneer.model.BookType;
import com.HPioneer.util.DbUtil;
import com.HPioneer.util.StringUtil;
import com.mysql.jdbc.Connection;

import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import javax.swing.JTextArea;
import javax.swing.JComboBox;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.awt.event.ActionEvent;
import javax.swing.ImageIcon;

public class BookAddInterFrm extends JInternalFrame {
    private JTextField bookNameTxt;
    private JTextField authorTxt;
    private final ButtonGroup buttonGroup = new ButtonGroup();
    private JTextField priceTxt;
    
    private DbUtil dbUtil = new DbUtil();
    private BookTypeDao bookTypeDao = new BookTypeDao();
    private BookDao bookDao = new BookDao();
    private JComboBox bookTypeJcb;
    private JTextArea bookDescTxt;
    private JRadioButton manJrb; 
    private JRadioButton femaleJrb;
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    BookAddInterFrm frame = new BookAddInterFrm();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public BookAddInterFrm() {
        setIconifiable(true);
        setClosable(true);
        setTitle("图书添加");
        setBounds(100, 100, 450, 463);
        
        JLabel lblNewLabel = new JLabel("图书名字:");
        
        bookNameTxt = new JTextField();
        bookNameTxt.setColumns(10);
        
        JLabel lblNewLabel_1 = new JLabel("图书作者:");
        
        authorTxt = new JTextField();
        authorTxt.setColumns(10);
        
        JLabel lblNewLabel_2 = new JLabel("作者性别:");
        
        manJrb = new JRadioButton("男");
        buttonGroup.add(manJrb);
        manJrb.setSelected(true);
        
        femaleJrb = new JRadioButton("女");
        buttonGroup.add(femaleJrb);
        
        JLabel lblNewLabel_3 = new JLabel("图书价格:");
        
        priceTxt = new JTextField();
        priceTxt.setColumns(10);
        
        JLabel lblNewLabel_4 = new JLabel("图书描述:");
        
        bookDescTxt = new JTextArea();
        
        JLabel lblNewLabel_5 = new JLabel("图书类别:");
        
        bookTypeJcb = new JComboBox();
        
        JButton btnNewButton = new JButton("添加");
        btnNewButton.setIcon(new ImageIcon(BookAddInterFrm.class.getResource("/images/add.png")));
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                bookAddActionPerformed(e);
            }
        });
        
        JButton btnNewButton_1 = new JButton("重置");
        btnNewButton_1.setIcon(new ImageIcon(BookAddInterFrm.class.getResource("/images/add.png")));
        btnNewButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                bookValueActionPerformed(e);
            }
        });
        
        btnNewButton_1.setIcon(new ImageIcon(BookAddInterFrm.class.getResource("/images/reset.png")));
        GroupLayout groupLayout = new GroupLayout(getContentPane());
        groupLayout.setHorizontalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addGap(28)
                    .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                        .addGroup(groupLayout.createSequentialGroup()
                            .addComponent(lblNewLabel_4)
                            .addPreferredGap(ComponentPlacement.RELATED)
                            .addComponent(bookDescTxt, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE))
                        .addGroup(groupLayout.createSequentialGroup()
                            .addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false)
                                .addGroup(groupLayout.createSequentialGroup()
                                    .addComponent(lblNewLabel_2)
                                    .addPreferredGap(ComponentPlacement.UNRELATED)
                                    .addComponent(manJrb)
                                    .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(femaleJrb))
                                .addGroup(groupLayout.createSequentialGroup()
                                    .addComponent(lblNewLabel)
                                    .addPreferredGap(ComponentPlacement.RELATED)
                                    .addComponent(bookNameTxt, GroupLayout.PREFERRED_SIZE, 91, GroupLayout.PREFERRED_SIZE)))
                            .addGap(18)
                            .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                                .addComponent(lblNewLabel_3)
                                .addComponent(lblNewLabel_1))
                            .addPreferredGap(ComponentPlacement.RELATED)
                            .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                                .addComponent(authorTxt, GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE)
                                .addComponent(priceTxt, GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE)))
                        .addGroup(groupLayout.createSequentialGroup()
                            .addComponent(btnNewButton)
                            .addGap(33)
                            .addComponent(btnNewButton_1))
                        .addGroup(groupLayout.createSequentialGroup()
                            .addComponent(lblNewLabel_5)
                            .addPreferredGap(ComponentPlacement.RELATED)
                            .addComponent(bookTypeJcb, 0, 262, Short.MAX_VALUE)))
                    .addGap(80))
        );
        groupLayout.setVerticalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addGap(33)
                    .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                        .addComponent(lblNewLabel)
                        .addComponent(bookNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(authorTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(lblNewLabel_1))
                    .addGap(26)
                    .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                        .addComponent(lblNewLabel_2)
                        .addComponent(manJrb)
                        .addComponent(femaleJrb)
                        .addComponent(lblNewLabel_3)
                        .addComponent(priceTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addGap(26)
                    .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                        .addComponent(lblNewLabel_5)
                        .addComponent(bookTypeJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addGap(30)
                    .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                        .addComponent(lblNewLabel_4)
                        .addComponent(bookDescTxt, GroupLayout.PREFERRED_SIZE, 140, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(ComponentPlacement.RELATED, 38, Short.MAX_VALUE)
                    .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                        .addComponent(btnNewButton)
                        .addComponent(btnNewButton_1))
                    .addGap(50))
        );
        getContentPane().setLayout(groupLayout);

        //显示文本域边框
        bookDescTxt.setBorder(new LineBorder(new java.awt.Color(127,157,185),1,false));
                
        fillBookType();
    }
    /**
     * 重置事件处理
     * @param e
     */
    private void bookValueActionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        this.resetValue();
    }

    private void bookAddActionPerformed(ActionEvent evt) {
        // TODO Auto-generated method stub
        String bookName = this.bookNameTxt.getText();
        String author = this.authorTxt.getText();
        String price = this.priceTxt.getText();
        String bookDesc = this.bookDescTxt.getText();
        
         if(StringUtil.isEmpty(bookName)){
                JOptionPane.showMessageDialog(null,"图书名称不能为空");
            }
         if(StringUtil.isEmpty(author)){
                JOptionPane.showMessageDialog(null,"图书作者不能为空");
            }
         if(StringUtil.isEmpty(price)){
                JOptionPane.showMessageDialog(null,"图书价格不能为空");
            }
         
         String sex ="";
         if(manJrb.isSelected()){
             sex="男";
         }else{
             sex="女";
         }
         
         BookType bookType =(BookType) bookTypeJcb.getSelectedItem();
         int bookTypeId = bookType.getId();
         
         Book book = new Book(bookName,author,sex,Float.parseFloat(price),bookTypeId,bookDesc);
         
         Connection con = null;
            try{
                con=dbUtil.getCon();
                int addNum = bookDao.add(con, book);    
                if(addNum == 1){
                    JOptionPane.showMessageDialog(null,"图书类别添加成功"); 
                    resetValue();
                }else{
                    JOptionPane.showMessageDialog(null,"图书类别添加失败");
                }
            }catch(Exception e){
                e.printStackTrace();  
                JOptionPane.showMessageDialog(null,"图书类别添加失败");
            }finally{
                try{
                dbUtil.closeCon(con);
                }catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();    
                }
                
            }
        }
    /**
     * 重置表单
     */
    private void resetValue() {
        // TODO Auto-generated method stub
        this.bookNameTxt.setText("");
        this.authorTxt.setText("");
        this.priceTxt.setText("");
        this.manJrb.setSelected(true);
        this.bookDescTxt.setText("");
        if(this.bookTypeJcb.getItemCount()>0){
            this.bookTypeJcb.setSelectedIndex(0);
            
        }
        
    }
    

    /**
     * 初始化图书类别下拉框
     */
    
    private void fillBookType(){
        Connection con = null;
        BookType bookType = null;
        try{
            con = dbUtil.getCon();
            ResultSet rs = bookTypeDao.list(con, new BookType());
            while( rs.next() ){
                bookType = new BookType();
                bookType.setId(rs.getInt("id"));
                bookType.setBookTypeName(rs.getString("bookTypeName"));
                this.bookTypeJcb.addItem(bookType);
             }
         }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally{
            
        }
    }
}

        
    
删BookManageInterFrm.java
package com.HPioneer.view;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;

import com.HPioneer.dao.BookDao;
import com.HPioneer.dao.BookTypeDao;
import com.HPioneer.model.Book;
import com.HPioneer.model.BookType;
import com.HPioneer.util.DbUtil;
import com.HPioneer.util.StringUtil;

public class BookManageInterFrm extends JInternalFrame {
    private JTable bookTable;
    private JTextField s_bookNameTxt;
    private JTextField s_authorTxt;
    private JComboBox s_bookTypeJcb;
    private JRadioButton manJrb ;
    private JRadioButton femaleJrb ;
    private JTextArea bookDescTxt;
    private JComboBox bookTypeJcb ;
    
    private DbUtil dbUtil=new DbUtil();
    private BookTypeDao bookTypeDao=new BookTypeDao();
    private BookDao bookDao=new BookDao();
    private JTextField idTxt;
    private JTextField bookNameTxt;
    private final ButtonGroup buttonGroup = new ButtonGroup();
    private JTextField priceTxt;
    private JTextField authorTxt;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    BookManageInterFrm frame = new BookManageInterFrm();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public BookManageInterFrm() {
        setClosable(true);
        setIconifiable(true);
        setTitle("\u56FE\u4E66\u7BA1\u7406");
        setBounds(100, 100, 677, 487);
        
        JScrollPane scrollPane = new JScrollPane();
        
        JPanel panel = new JPanel();
        panel.setBorder(new TitledBorder(null, "\u641C\u7D22\u6761\u4EF6", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        
        JPanel panel_1 = new JPanel();
        panel_1.setBorder(new TitledBorder(null, "\u8868\u5355\u64CD\u4F5C", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        GroupLayout groupLayout = new GroupLayout(getContentPane());
        groupLayout.setHorizontalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
                        .addComponent(panel_1, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(Alignment.LEADING, groupLayout.createParallelGroup(Alignment.LEADING, false)
                            .addComponent(panel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(scrollPane)))
                    .addContainerGap(66, Short.MAX_VALUE))
        );
        groupLayout.setVerticalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addGap(28)
                    .addComponent(panel, GroupLayout.PREFERRED_SIZE, 65, GroupLayout.PREFERRED_SIZE)
                    .addGap(18)
                    .addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 116, GroupLayout.PREFERRED_SIZE)
                    .addGap(18)
                    .addComponent(panel_1, GroupLayout.DEFAULT_SIZE, 203, Short.MAX_VALUE)
                    .addContainerGap())
        );
        
        JLabel lblNewLabel = new JLabel("\u7F16\u53F7\uFF1A");
        
        idTxt = new JTextField();
        idTxt.setEditable(false);
        idTxt.setColumns(10);
        
        JLabel lblNewLabel_1 = new JLabel("\u56FE\u4E66\u540D\u79F0\uFF1A");
        
        bookNameTxt = new JTextField();
        bookNameTxt.setColumns(10);
        
        JLabel label_3 = new JLabel("\u4F5C\u8005\u6027\u522B\uFF1A");
        
        manJrb = new JRadioButton("\u7537");
        buttonGroup.add(manJrb);
        manJrb.setSelected(true);
        
        femaleJrb = new JRadioButton("\u5973");
        buttonGroup.add(femaleJrb);
        
        JLabel label_4 = new JLabel("\u4EF7\u683C\uFF1A");
        
        priceTxt = new JTextField();
        priceTxt.setColumns(10);
        
        JLabel lblNewLabel_2 = new JLabel("\u56FE\u4E66\u4F5C\u8005\uFF1A");
        
        authorTxt = new JTextField();
        authorTxt.setColumns(10);
        
        JLabel label_5 = new JLabel("\u56FE\u4E66\u7C7B\u522B\uFF1A");
        
        bookTypeJcb = new JComboBox();
        
        JLabel label_6 = new JLabel("\u56FE\u4E66\u63CF\u8FF0\uFF1A");
        
        bookDescTxt = new JTextArea();
        
        JButton button_1 = new JButton("\u4FEE\u6539");
        button_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                bookUpdateActionPerformed(evt);
            }
        });
        button_1.setIcon(new ImageIcon(BookManageInterFrm.class.getResource("/images/modify.png")));
        
        JButton button_2 = new JButton("\u5220\u9664");
        button_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                bookDeleteActionPerformed(evt);
            }
        });
        button_2.setIcon(new ImageIcon(BookManageInterFrm.class.getResource("/images/delete.png")));
        GroupLayout gl_panel_1 = new GroupLayout(panel_1);
        gl_panel_1.setHorizontalGroup(
            gl_panel_1.createParallelGroup(Alignment.LEADING)
                .addGroup(gl_panel_1.createSequentialGroup()
                    .addGap(19)
                    .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                        .addGroup(gl_panel_1.createSequentialGroup()
                            .addComponent(button_1)
                            .addGap(18)
                            .addComponent(button_2)
                            .addGap(386))
                        .addGroup(gl_panel_1.createSequentialGroup()
                            .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                                .addGroup(gl_panel_1.createSequentialGroup()
                                    .addComponent(label_6)
                                    .addPreferredGap(ComponentPlacement.UNRELATED)
                                    .addComponent(bookDescTxt))
                                .addGroup(gl_panel_1.createSequentialGroup()
                                    .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING, false)
                                        .addGroup(gl_panel_1.createSequentialGroup()
                                            .addComponent(label_4)
                                            .addPreferredGap(ComponentPlacement.RELATED)
                                            .addComponent(priceTxt))
                                        .addGroup(gl_panel_1.createSequentialGroup()
                                            .addComponent(lblNewLabel)
                                            .addPreferredGap(ComponentPlacement.RELATED)
                                            .addComponent(idTxt, GroupLayout.PREFERRED_SIZE, 87, GroupLayout.PREFERRED_SIZE)))
                                    .addGap(26)
                                    .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING, false)
                                        .addGroup(gl_panel_1.createSequentialGroup()
                                            .addComponent(lblNewLabel_1)
                                            .addPreferredGap(ComponentPlacement.RELATED)
                                            .addComponent(bookNameTxt, GroupLayout.PREFERRED_SIZE, 85, GroupLayout.PREFERRED_SIZE))
                                        .addGroup(gl_panel_1.createSequentialGroup()
                                            .addComponent(lblNewLabel_2)
                                            .addPreferredGap(ComponentPlacement.RELATED)
                                            .addComponent(authorTxt)))
                                    .addGap(26)
                                    .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING, false)
                                        .addGroup(gl_panel_1.createSequentialGroup()
                                            .addComponent(label_3)
                                            .addPreferredGap(ComponentPlacement.UNRELATED)
                                            .addComponent(manJrb)
                                            .addPreferredGap(ComponentPlacement.RELATED)
                                            .addComponent(femaleJrb))
                                        .addGroup(gl_panel_1.createSequentialGroup()
                                            .addComponent(label_5)
                                            .addPreferredGap(ComponentPlacement.UNRELATED)
                                            .addComponent(bookTypeJcb, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
                            .addContainerGap(86, Short.MAX_VALUE))))
        );
        gl_panel_1.setVerticalGroup(
            gl_panel_1.createParallelGroup(Alignment.LEADING)
                .addGroup(gl_panel_1.createSequentialGroup()
                    .addGap(21)
                    .addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
                        .addComponent(lblNewLabel)
                        .addComponent(idTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(lblNewLabel_1)
                        .addComponent(bookNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(label_3)
                        .addComponent(manJrb)
                        .addComponent(femaleJrb))
                    .addGap(18)
                    .addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
                        .addComponent(label_4)
                        .addComponent(priceTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(lblNewLabel_2)
                        .addComponent(authorTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(label_5)
                        .addComponent(bookTypeJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addGap(18)
                    .addGroup(gl_panel_1.createParallelGroup(Alignment.LEADING)
                        .addComponent(label_6)
                        .addComponent(bookDescTxt, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(ComponentPlacement.RELATED, 20, Short.MAX_VALUE)
                    .addGroup(gl_panel_1.createParallelGroup(Alignment.BASELINE)
                        .addComponent(button_1)
                        .addComponent(button_2)))
        );
        panel_1.setLayout(gl_panel_1);
        
        JLabel label = new JLabel("\u56FE\u4E66\u540D\u79F0\uFF1A");
        
        s_bookNameTxt = new JTextField();
        s_bookNameTxt.setColumns(10);
        
        JLabel label_1 = new JLabel("\u56FE\u4E66\u4F5C\u8005\uFF1A");
        
        s_authorTxt = new JTextField();
        s_authorTxt.setColumns(10);
        
        JLabel label_2 = new JLabel("\u56FE\u4E66\u7C7B\u522B\uFF1A");
        
        s_bookTypeJcb = new JComboBox();
        
        JButton button = new JButton("\u67E5\u8BE2");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                bookSearchActionPerformed(e);
            }
        });
        button.setIcon(new ImageIcon(BookManageInterFrm.class.getResource("/images/search.png")));
        GroupLayout gl_panel = new GroupLayout(panel);
        gl_panel.setHorizontalGroup(
            gl_panel.createParallelGroup(Alignment.LEADING)
                .addGroup(gl_panel.createSequentialGroup()
                    .addGap(19)
                    .addComponent(label)
                    .addPreferredGap(ComponentPlacement.RELATED)
                    .addComponent(s_bookNameTxt, GroupLayout.PREFERRED_SIZE, 77, GroupLayout.PREFERRED_SIZE)
                    .addGap(18)
                    .addComponent(label_1)
                    .addPreferredGap(ComponentPlacement.RELATED)
                    .addComponent(s_authorTxt, GroupLayout.PREFERRED_SIZE, 74, GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(ComponentPlacement.UNRELATED)
                    .addComponent(label_2)
                    .addPreferredGap(ComponentPlacement.RELATED)
                    .addComponent(s_bookTypeJcb, GroupLayout.PREFERRED_SIZE, 78, GroupLayout.PREFERRED_SIZE)
                    .addGap(18)
                    .addComponent(button)
                    .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        gl_panel.setVerticalGroup(
            gl_panel.createParallelGroup(Alignment.TRAILING)
                .addGroup(gl_panel.createSequentialGroup()
                    .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
                        .addComponent(label)
                        .addComponent(s_bookNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(label_1)
                        .addComponent(s_authorTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(label_2)
                        .addComponent(s_bookTypeJcb, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(button))
                    .addGap(16))
        );
        panel.setLayout(gl_panel);
        
        bookTable = new JTable();
        bookTable.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent met) {
                bookTableMousePressed(met);
            }
        });
        scrollPane.setViewportView(bookTable);
        bookTable.setModel(new DefaultTableModel(
            new Object[][] {
            },
            new String[] {
                "\u7F16\u53F7", "\u56FE\u4E66\u540D\u79F0", "\u56FE\u4E66\u4F5C\u8005", "\u4F5C\u8005\u6027\u522B", "\u56FE\u4E66\u4EF7\u683C", "\u56FE\u4E66\u63CF\u8FF0", "\u56FE\u4E66\u7C7B\u522B"
            }
        ) {
            boolean[] columnEditables = new boolean[] {
                false, false, false, false, false, false, false
            };
            public boolean isCellEditable(int row, int column) {
                return columnEditables[column];
            }
        });
        bookTable.getColumnModel().getColumn(5).setPreferredWidth(119);
        getContentPane().setLayout(groupLayout);

        //设置文本域边框
        bookDescTxt.setBorder(new LineBorder(new java.awt.Color(127,157,185), 1, false));

                
        this.fillBookType("search");
        this.fillBookType("modify");
        this.fillTable(new Book());
    }
    
    /**
     * 图书删除事件处理
     * @param evt
     */
    private void bookDeleteActionPerformed(ActionEvent evt) {
        String id=idTxt.getText();
        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.delete((com.mysql.jdbc.Connection) 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.closeCon(con);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 图书修改事件处理
     * @param evt
     */ 
    private void bookUpdateActionPerformed(ActionEvent evt) {
        String id=this.idTxt.getText();
        if(StringUtil.isEmpty(id)){
            JOptionPane.showMessageDialog(null, "请选择要修改的内容");
            return;
        }
        
        String bookName=this.bookNameTxt.getText();
        String author=this.authorTxt.getText();
        String price=this.priceTxt.getText();
        String bookDesc=this.bookDescTxt.getText();
        
        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(manJrb.isSelected()){
            sex="男";
        }else if(femaleJrb.isSelected()){
            sex="女";
        }
        
        BookType bookType=(BookType) bookTypeJcb.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.update((com.mysql.jdbc.Connection) 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.closeCon(con);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    
    /**
     * 重置表单
     */
    private void resetValue(){
        this.idTxt.setText("");
        this.bookNameTxt.setText("");
        this.authorTxt.setText("");
        this.priceTxt.setText("");
        this.manJrb.setSelected(true);
        this.bookDescTxt.setText("");
        if(this.bookTypeJcb.getItemCount()>0){
        this.bookTypeJcb.setSelectedIndex(0);
        }
    }

    /**
     * 表格行点击事件处理
     * @param met
     */
    private void bookTableMousePressed(MouseEvent met) {
        int row=this.bookTable.getSelectedRow();
        this.idTxt.setText((String)bookTable.getValueAt(row, 0));
        this.bookNameTxt.setText((String)bookTable.getValueAt(row, 1));
        this.authorTxt.setText((String)bookTable.getValueAt(row, 2));
        String sex=(String)bookTable.getValueAt(row, 3);
        if("男".equals(sex)){
            this.manJrb.setSelected(true);
        }else if("女".equals(sex)){
            this.femaleJrb.setSelected(true);
        }
        this.priceTxt.setText((Float)bookTable.getValueAt(row, 4)+"");
        this.bookDescTxt.setText((String)bookTable.getValueAt(row, 5));
        String bookTypeName=(String)this.bookTable.getValueAt(row, 6);
        int n=this.bookTypeJcb.getItemCount();
        for(int i=0;i<n;i++){
            BookType item=(BookType)this.bookTypeJcb.getItemAt(i);
            if(item.getBookTypeName().equals(bookTypeName)){
                this.bookTypeJcb.setSelectedIndex(i);
            }
        }
    }

    /**
     * 图书查询事件处理
     * @param e
     */
    private void bookSearchActionPerformed(ActionEvent evt) {
        String bookName=this.s_bookNameTxt.getText();
        String author=this.s_authorTxt.getText();
        BookType bookType=(BookType) this.s_bookTypeJcb.getSelectedItem();
        int bookTypeId=bookType.getId();
        
        Book book=new Book(bookName,author,bookTypeId);
        this.fillTable(book);
    }

    /**
     * 初始化下拉框
     * @param type 下拉框类型
     */
    private void fillBookType(String type){
        com.mysql.jdbc.Connection con=null;
        BookType bookType=null;
        try{
            con=dbUtil.getCon();
            ResultSet rs=bookTypeDao.list(con, new BookType());
            if("search".equals(type)){
                bookType=new BookType();
                bookType.setBookTypeName("请选择...");
                bookType.setId(-1);
                this.s_bookTypeJcb.addItem(bookType);
            }
            while(rs.next()){
                bookType=new BookType();
                bookType.setBookTypeName(rs.getString("bookTypeName"));
                bookType.setId(rs.getInt("id"));
                if("search".equals(type)){
                    this.s_bookTypeJcb.addItem(bookType);
                }else if("modify".equals(type)){
                    this.bookTypeJcb.addItem(bookType);
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    /**
     * 初始化表格
     * @param book
     */
private void fillTable(Book book){
    DefaultTableModel dtm=(DefaultTableModel) bookTable.getModel();
    dtm.setRowCount(0); // 设置成0行
    Connection con=null;
    try{
        con=dbUtil.getCon();
        ResultSet rs=bookDao.list((com.mysql.jdbc.Connection) con, book);
        while(rs.next()){
            Vector v=new Vector();
            v.add(rs.getString("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);
        }
    }catch(Exception e){
        e.printStackTrace();
    }finally{
        try {
            dbUtil.closeCon(con);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
  }
}

改BookTypeManagerInterFrm.java
package com.HPioneer.view;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;

import com.HPioneer.dao.BookDao;
import com.HPioneer.dao.BookTypeDao;
import com.HPioneer.model.BookType;
import com.HPioneer.util.DbUtil;
import com.HPioneer.util.StringUtil;

public class BookTypeManagerInterFrm extends JInternalFrame {
    private JTable bookTypeTable;
    private JTextArea bookTypeDescTxt ;
    
    private DbUtil dbUtil=new DbUtil();
    private BookTypeDao bookTypeDao=new BookTypeDao();
    private BookDao bookDao=new BookDao();
    private JTextField s_bookTypeNameTxt;
    private JTextField idTxt;
    private JTextField bookTypeNameTxt;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    BookTypeManagerInterFrm frame = new BookTypeManagerInterFrm();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public BookTypeManagerInterFrm() {
        setClosable(true);
        setIconifiable(true);
        setTitle("\u56FE\u4E66\u7C7B\u522B\u7BA1\u7406");
        setBounds(100, 100, 507, 481);
        
        JScrollPane scrollPane = new JScrollPane();
        
        JLabel label = new JLabel("\u56FE\u4E66\u7C7B\u522B\u540D\u79F0\uFF1A");
        
        s_bookTypeNameTxt = new JTextField();
        s_bookTypeNameTxt.setColumns(10);
        
        JButton button = new JButton("\u67E5\u8BE2");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                bookTypeSearchActionPerformed(e);
            }
        });
        button.setIcon(new ImageIcon(BookTypeManagerInterFrm.class.getResource("/images/search.png")));
        
        JPanel panel = new JPanel();
        panel.setBorder(new TitledBorder(null, "\u8868\u5355\u64CD\u4F5C", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        GroupLayout groupLayout = new GroupLayout(getContentPane());
        groupLayout.setHorizontalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addGap(42)
                    .addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
                        .addComponent(panel, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 401, Short.MAX_VALUE)
                        .addGroup(Alignment.LEADING, groupLayout.createSequentialGroup()
                            .addComponent(label)
                            .addGap(18)
                            .addComponent(s_bookTypeNameTxt, GroupLayout.PREFERRED_SIZE, 133, GroupLayout.PREFERRED_SIZE)
                            .addGap(18)
                            .addComponent(button))
                        .addComponent(scrollPane, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 401, Short.MAX_VALUE))
                    .addGap(48))
        );
        groupLayout.setVerticalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addGap(33)
                    .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                        .addComponent(label)
                        .addComponent(s_bookTypeNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(button))
                    .addGap(39)
                    .addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 126, GroupLayout.PREFERRED_SIZE)
                    .addGap(18)
                    .addComponent(panel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(25, Short.MAX_VALUE))
        );
        
        JLabel lblNewLabel = new JLabel("\u7F16\u53F7\uFF1A");
        
        idTxt = new JTextField();
        idTxt.setEditable(false);
        idTxt.setColumns(10);
        
        JLabel label_1 = new JLabel("\u56FE\u4E66\u7C7B\u522B\u540D\u79F0\uFF1A");
        
        bookTypeNameTxt = new JTextField();
        bookTypeNameTxt.setColumns(10);
        
        JLabel lblNewLabel_1 = new JLabel("\u63CF\u8FF0\uFF1A");
        
        bookTypeDescTxt = new JTextArea();
        
        JButton btnNewButton = new JButton("\u4FEE\u6539");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                bookTypeUpdateActionEvent(e);
            }
        });
        btnNewButton.setIcon(new ImageIcon(BookTypeManagerInterFrm.class.getResource("/images/modify.png")));
        
        JButton btnNewButton_1 = new JButton("\u5220\u9664");
        btnNewButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                bookTypeDeleteActionEvent(e);
            }
        });
        btnNewButton_1.setIcon(new ImageIcon(BookTypeManagerInterFrm.class.getResource("/images/delete.png")));
        GroupLayout gl_panel = new GroupLayout(panel);
        gl_panel.setHorizontalGroup(
            gl_panel.createParallelGroup(Alignment.LEADING)
                .addGroup(gl_panel.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(gl_panel.createParallelGroup(Alignment.LEADING, false)
                        .addGroup(gl_panel.createSequentialGroup()
                            .addComponent(lblNewLabel)
                            .addPreferredGap(ComponentPlacement.RELATED)
                            .addComponent(idTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                            .addGap(31)
                            .addComponent(label_1)
                            .addPreferredGap(ComponentPlacement.UNRELATED)
                            .addComponent(bookTypeNameTxt, GroupLayout.PREFERRED_SIZE, 105, GroupLayout.PREFERRED_SIZE))
                        .addGroup(gl_panel.createSequentialGroup()
                            .addComponent(lblNewLabel_1)
                            .addPreferredGap(ComponentPlacement.RELATED)
                            .addComponent(bookTypeDescTxt))
                        .addGroup(gl_panel.createSequentialGroup()
                            .addComponent(btnNewButton)
                            .addGap(26)
                            .addComponent(btnNewButton_1)))
                    .addContainerGap(37, Short.MAX_VALUE))
        );
        gl_panel.setVerticalGroup(
            gl_panel.createParallelGroup(Alignment.LEADING)
                .addGroup(gl_panel.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
                        .addComponent(lblNewLabel)
                        .addComponent(idTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addComponent(label_1)
                        .addComponent(bookTypeNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addGap(18)
                    .addGroup(gl_panel.createParallelGroup(Alignment.LEADING)
                        .addComponent(lblNewLabel_1)
                        .addComponent(bookTypeDescTxt, GroupLayout.PREFERRED_SIZE, 60, GroupLayout.PREFERRED_SIZE))
                    .addGap(18)
                    .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
                        .addComponent(btnNewButton)
                        .addComponent(btnNewButton_1))
                    .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        panel.setLayout(gl_panel);
        
        bookTypeTable = new JTable();
        bookTypeTable.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                bookTypeTableMousePressed(e);
            }
        });
        bookTypeTable.setModel(new DefaultTableModel(
            new Object[][] {
            },
            new String[] {
                "\u7F16\u53F7", "\u56FE\u4E66\u7C7B\u522B\u540D\u79F0", "\u56FE\u4E66\u7C7B\u522B\u63CF\u8FF0"
            }
        ) {
            boolean[] columnEditables = new boolean[] {
                false, false, false
            };
            public boolean isCellEditable(int row, int column) {
                return columnEditables[column];
            }
        });
        bookTypeTable.getColumnModel().getColumn(1).setPreferredWidth(110);
        bookTypeTable.getColumnModel().getColumn(2).setPreferredWidth(123);
        scrollPane.setViewportView(bookTypeTable);
        getContentPane().setLayout(groupLayout);
        
        this.fillTable(new BookType());

        bookTypeDescTxt.setBorder(new LineBorder(new java.awt.Color(127,157,185), 1, false));
    }
    
     /*
     * 图书类别删除事件处理
     * @param evt
     */
    private void bookTypeDeleteActionEvent(ActionEvent evt) {
        String id=idTxt.getText();
        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=bookTypeDao.delete(con, id);
                if(deleteNum==1){
                    JOptionPane.showMessageDialog(null, "删除成功");
                    this.resetValue();
                    this.fillTable(new BookType());
                }else{
                    JOptionPane.showMessageDialog(null, "删除失败");
                }
            }catch(Exception e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, "删除失败");
            }finally{
                try {
                    dbUtil.closeCon(con);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

     /**
     * 图书类别修改事件处理
     * @param evt
     */
    private void bookTypeUpdateActionEvent(ActionEvent evt) {
        String id=idTxt.getText();
        String bookTypeName=bookTypeNameTxt.getText();
        String bookTypeDesc=bookTypeDescTxt.getText();
        if(StringUtil.isEmpty(id)){
            JOptionPane.showMessageDialog(null, "请选择要修改的内容");
            return;
        }
        if(StringUtil.isEmpty(bookTypeName)){
            JOptionPane.showMessageDialog(null, "请选择要修改的内容");
            return;
        }
        BookType bookType=new BookType(Integer.parseInt(id),bookTypeName,bookTypeDesc);
        Connection con=null;
        try{
            con=dbUtil.getCon();
            int modifyNum=bookTypeDao.update(con, bookType);
            if(modifyNum==1){
                JOptionPane.showMessageDialog(null, "修改成功");
                this.resetValue();
                this.fillTable(new BookType());
            }else{
                JOptionPane.showMessageDialog(null, "修改失败");
            }
        }catch(Exception e){
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "修改失败");
        }finally{
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    /**
     * 表格行点击事件
     * @param e
     */
    private void bookTypeTableMousePressed(MouseEvent evt) {
        int row=bookTypeTable.getSelectedRow();
        idTxt.setText((String)bookTypeTable.getValueAt(row, 0));
        bookTypeNameTxt.setText((String)bookTypeTable.getValueAt(row, 1));
        bookTypeDescTxt.setText((String)bookTypeTable.getValueAt(row, 2));
    }

    /**
     * 图书类别搜索事件处理
     * @param evt
     */
    private void bookTypeSearchActionPerformed(ActionEvent evt) {
        String s_bookTypeName=this.s_bookTypeNameTxt.getText();
        BookType bookType=new BookType();
        bookType.setBookTypeName(s_bookTypeName);
        this.fillTable(bookType);
    }

    /**
     * 初始化表格
     * @param bookType
     */
    private void fillTable(BookType bookType){
        DefaultTableModel dtm=(DefaultTableModel) bookTypeTable.getModel();
        dtm.setRowCount(0); 
        Connection con=null;
        try{
            con=dbUtil.getCon();
            ResultSet rs=bookTypeDao.list(con, bookType);
            while(rs.next()){
                Vector v=new Vector();
                v.add(rs.getString("id"));
                v.add(rs.getString("bookTypeName"));
                v.add(rs.getString("bookTypeDesc"));
                dtm.addRow(v);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try {
                dbUtil.closeCon(con);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    
    /**
     * 重置表单
     */
    private void resetValue(){
        this.idTxt.setText("");
        this.bookTypeNameTxt.setText("");
        this.bookTypeDescTxt.setText("");
    }
}

查BookTypeAddInterFrm.java
package com.HPioneer.view;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.LineBorder;

import com.HPioneer.dao.BookTypeDao;
import com.HPioneer.model.BookType;
import com.HPioneer.util.DbUtil;
import com.HPioneer.util.StringUtil;
import com.mysql.jdbc.Connection;

public class BookTypeAddInterFrm extends JInternalFrame {
    private JTextField bookTypeNameTxt;
    private JTextArea bookTypeDescTxt;

    private DbUtil dbUtil = new DbUtil();
    private BookTypeDao bookTypeDao = new BookTypeDao();
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    BookTypeAddInterFrm frame = new BookTypeAddInterFrm();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public BookTypeAddInterFrm() {
        setIconifiable(true);
        setClosable(true);
        setTitle("图书类别添加");
        setBounds(100, 100, 450, 300);
        
        JLabel lblNewLabel = new JLabel("图书类别名称:");
        
        JLabel lblNewLabel_1 = new JLabel("图书类别描述:");
        
        bookTypeNameTxt = new JTextField();
        bookTypeNameTxt.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
        bookTypeNameTxt.setColumns(10);
        
        bookTypeDescTxt = new JTextArea();
        
        JButton btnNewButton = new JButton("添加");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                bookTypeAddActionPerformed(e);
            }
        });
        btnNewButton.setIcon(new ImageIcon(BookTypeAddInterFrm.class.getResource("/images/add.png")));
        
        JButton btnNewButton_1 = new JButton("重置");
        btnNewButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                resetValueActionPerformed(e);
            }
        });
        btnNewButton_1.setIcon(new ImageIcon(BookTypeAddInterFrm.class.getResource("/images/reset.png")));
        GroupLayout groupLayout = new GroupLayout(getContentPane());
        groupLayout.setHorizontalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                        .addGroup(groupLayout.createSequentialGroup()
                            .addGap(68)
                            .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                                .addComponent(lblNewLabel)
                                .addComponent(lblNewLabel_1)))
                        .addGroup(groupLayout.createSequentialGroup()
                            .addGap(83)
                            .addComponent(btnNewButton)))
                    .addPreferredGap(ComponentPlacement.RELATED)
                    .addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
                        .addGroup(groupLayout.createSequentialGroup()
                            .addGap(34)
                            .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                                .addComponent(bookTypeNameTxt, GroupLayout.DEFAULT_SIZE, 162, Short.MAX_VALUE)
                                .addComponent(bookTypeDescTxt, GroupLayout.DEFAULT_SIZE, 162, Short.MAX_VALUE)))
                        .addGroup(groupLayout.createSequentialGroup()
                            .addPreferredGap(ComponentPlacement.RELATED)
                            .addComponent(btnNewButton_1)))
                    .addGap(78))
        );
        groupLayout.setVerticalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup(groupLayout.createSequentialGroup()
                    .addGap(51)
                    .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                        .addComponent(lblNewLabel)
                        .addComponent(bookTypeNameTxt, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addGap(35)
                    .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                        .addComponent(lblNewLabel_1)
                        .addComponent(bookTypeDescTxt, GroupLayout.PREFERRED_SIZE, 79, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(ComponentPlacement.RELATED, 35, Short.MAX_VALUE)
                    .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                        .addComponent(btnNewButton_1)
                        .addComponent(btnNewButton))
                    .addGap(26))
        );
        getContentPane().setLayout(groupLayout);
        
        //显示文本域边框
        bookTypeDescTxt.setBorder(new LineBorder(new java.awt.Color(127,157,185),1,false));

    }
    /**
     * 图书类别添加事件处理
     * @param e
     */
    protected void bookTypeAddActionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        String bookTypeName = this.bookTypeNameTxt.getText();
        String bookTypeDesc = this.bookTypeDescTxt.getText();
        if(StringUtil.isEmpty(bookTypeName)){
            JOptionPane.showMessageDialog(null,"图书类别不能为空");
        }
        BookType bookType = new BookType(bookTypeName,bookTypeDesc);
        Connection con = null;
        try{
            con=dbUtil.getCon();
            int n = bookTypeDao.add(con, bookType);
            if(n==1){
                JOptionPane.showMessageDialog(null,"图书类别添加成功"); 
                resetValue();
            }else{
                JOptionPane.showMessageDialog(null,"图书类别添加失败"); 
            }
        }catch(Exception e1){
            e1.printStackTrace();
            JOptionPane.showMessageDialog(null,"图书类别添加失败");         
        }finally{
            try{
            dbUtil.closeCon(con);
            }catch (Exception e1) {
                // TODO: handle exception
            }
            
        }
    }

    /**
     * 重置事件处理
     * @param evt
     */
    private void resetValueActionPerformed(ActionEvent evt) {
        // TODO Auto-generated method stub
        this.resetValue();
    }

    /**
     * 重置表单
     */
    private void resetValue() {
        this.bookTypeNameTxt.setText("");
        this.bookTypeDescTxt.setText("");
    }
}

实验九:数据库的完整性约束 一、实验目的 1. 掌握主键约束、外键约束及check约束的用法; 2. 掌握默认值约束和默认值对象的应用; 3. 掌握用触发器实现参照完整性的方法。 二、实验学时 2学时 三、实验要求 1. 了解约束、默认值; 2. 了解触发器的定义方法; 3. 掌握触发器的编写和运行方法 4. 完成实验报告。 四、实验内容 1. 数据完整性。以实验数据库为基础数据,请使用T- SQL语句完成以下内容,并将SQL语句写在实验报告册中: 1) 将数据库stu的表course的cno字段定义为主键,约束名称为cno_pk; 2) 为表course中的字段cname添加唯一值约束; 3) 对于数据表sc的sno、cno字段定义为外码,使之与表student的主码sno及表cours e的主码cno对应,实现如下参照完整性: 删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录; 修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝 修改; 修改course表cno字段值时,该字段在sc表中的对应值也应修改; 删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录; 向sc表添加记录时,如果该记录的sno字段的值在student中不存在,则拒绝插入; 4)定义check约束,要求学生学号sno必须为9位数字字符,且不能以0开头,第二三 位皆为0; 5)定义stu数据库中student表中学生年龄值在16~25范围内; 6)定义stu数据库student表中学生年龄值默认值为20; 7) 修改student表学生的年龄值约束可以为15~30范围内; 8) 删除表course中字段cname的唯一值约束; 2. 以实验数据库为基础数据,编写以下触发器并测试。 1) 为表course建立一个 INSERT触发器,当插入的新行中课程学分(ccredit)的值不是1~6时,就激活该出发器 ,撤销该插入操作,并使用RAISERROR语句返回一个错误信息。 2)为course表再创建一个UPDATE触发器,当更新了某门课程的课程号信息时,就激 活该触发器级联更新sc表中相关的课程号信息,并使用PRINT语句返回一个提示信息 。 3)为student表创建DELECT触发器,在删除中的一条记录的同时将sc表中的相应记录 也删除。 4)创建INSTEAD OF触发器,当向sc表中插入记录时,先检查sno列上的值在student中是否存在,如果 存在执行插入操作,如果不存在则提示"该学生不存在"。 5)比较约束与触发器的执行顺序。(在一个表中创建CHECK约束和触发器,然后向表中 插入一条不符合约束和触发器的记录,察看谁先发生作用。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值