环境配置请看以下:
Java Swing 之 WindowBuilder 实现 员工信息管理系统(数据库Derby通过JDBC操作)
Java代码实现:
一、登录界面LoginPanel类:
package empsystem;
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.FontUIResource;
public class LoginPanel extends JFrame {// 用于展示窗口组件及信息,提供可视化界面
private JPanel loginPanel;
private JTextField userName;
private JPasswordField passWord;
private JButton loginButton;
private JCheckBox rememberCheckbox;
private JLabel message0, message1, message2;// 用于信息提示
private Font font;
private String imagePaths = "a.jpg";// 存储图片路径
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LoginPanel frame = new LoginPanel();
frame.setBounds(100, 100, 755, 430); // 继承JFrame底层容器,自定义大小和位置设置
frame.setTitle("员工信息管理平台"); // 继承JFrame底层容器,设置标题
frame.setVisible(true);// 设置窗口可见
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭窗口释放资源
frame.setLocationRelativeTo(null);
Timer timer = new Timer(1000, e -> {
JOptionPane.showMessageDialog(null, "请输入管理员账号及密码:\n账号:liumin\n密码:lm123");
});
timer.setRepeats(false);
timer.start();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
LoginPanel() {
setResizable(false);
setBackground();// 背景图片设置
// 消息窗口字体
UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("楷体", Font.BOLD, 13)));
// 面板(界面设计)
// 首页面板
font = new Font("仿宋", Font.BOLD, 16);// 设置首页字体
// 登陆面板
loginPanel = new JPanel();
loginPanel.setLayout(null);// 设置布局格式为弹簧式
message0 = new JLabel("职员信息录入系统");
message0.setLocation(208, 61);
message0.setSize(300, 40);
message0.setForeground(Color.white);
message0.setFont(new Font("楷体", Font.ITALIC + Font.BOLD, 35));
loginPanel.add(message0);
message1 = new JLabel("用户名:");
message1.setLocation(196, 132);
message1.setSize(60, 30);
message1.setForeground(Color.white);
message1.setFont(font);
userName = new JTextField("请输入电话号/用户名");
userName.setLocation(266, 134);
userName.setSize(200, 28);
userName.setFont(new Font("仿宋", Font.PLAIN, 13));
loginPanel.add(message1);
loginPanel.add(userName);
message2 = new JLabel("密码:");
message2.setLocation(216, 195);
message2.setSize(60, 30);
message2.setForeground(Color.white);
message2.setFont(font);
passWord = new JPasswordField();
passWord.setLocation(266, 199);
passWord.setSize(200, 26);
passWord.setEchoChar((char) 0);//设置密码显示
loginPanel.add(message2);
loginPanel.add(passWord);
loginButton = new JButton("登录");
loginButton.setLocation(266, 257);
loginButton.setSize(200, 35);
loginButton.setMargin(new Insets(0, 0, 0, 0));
loginButton.setFont(new Font("楷体", Font.BOLD, 17));
loginButton.addActionListener(e -> {// 绑定动作事件
String user = userName.getText();
String pas = new String(passWord.getPassword());
if(user.equals("user1")&&pas.equals("user123")) {
JOptionPane.showMessageDialog(this, "恭喜你登陆成功!");
dispose();
new SettingPanel().setVisible(true);
}
else {
JOptionPane.showMessageDialog(null, "输入错误,请再次输入:\n账号:user1\n密码:user123");
}
});// 匿名类实现获取用户名密码信息
rememberCheckbox = new JCheckBox("记住密码");
rememberCheckbox.setForeground(Color.white);
rememberCheckbox.setOpaque(false);
loginPanel.add(loginButton);
loginPanel.add(rememberCheckbox);
setContentPane(loginPanel);
loginPanel.setOpaque(false);
}
public void setBackground() {// 背景设置
ImageIcon img = new ImageIcon(imagePaths);
((JPanel) this.getContentPane()).setOpaque(false);
img.setImage(img.getImage().getScaledInstance(760, 410, Image.SCALE_DEFAULT));
JLabel background = new JLabel(img);
this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
}
}
二、添加信息界面SettingPanel类:
package empsystem;
import java.awt.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.table.*;
public class SettingPanel extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel settingPanel;
private JButton maskButton, suitButton, deleteButton, submitButton;
private JScrollPane jscrollPane;// 用于表格显示
private DefaultTableModel table;
private JTable jtable;
private Vector<String> columns;// 存储列数据
private Vector<Vector<String>> data;// 存储表格数据
private Derbydb derbydb;
private String imagePaths = "a.jpg";// 存储图片路径
private int count = 5;
/**
* Create the frame.
*/
public SettingPanel() {
setLocationRelativeTo(null);
setBounds(100, 100, 757, 447); // 继承JFrame底层容器,自定义大小和位置设置
setTitle("员工信息管理平台"); // 继承JFrame底层容器,设置标题
setVisible(true);// 设置窗口可见
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭窗口释放资源
setBackground();// 背景图片设置
derbydb = new Derbydb();// 数据库操作
settingPanel = new JPanel();
settingPanel.setLayout(null);
derbydb.createDB();
data = new Vector<>();// 表格信息展示
columns = new Vector<>();// 列表属性设置
columns.addElement("ID编号");
columns.addElement("姓名");
columns.addElement("性别");
columns.addElement("出生日期");
columns.addElement("地址");
columns.addElement("工资");
table = new DefaultTableModel(data, columns);
jtable = new JTable(table);
JTableHeader head = jtable.getTableHeader();
head.setPreferredSize(new Dimension(head.getWidth(), 25));
head.setFont(new Font("楷体", Font.BOLD, 17));
head.setForeground(Color.BLACK);
head.setBackground(new Color(105, 132, 209));
jtable.setRowHeight(25);
jtable.setGridColor(Color.BLACK);
jtable.setBackground(Color.WHITE);
jtable.setFont(new Font("宋体", Font.BOLD, 15));
DefaultTableCellRenderer ter = new DefaultTableCellRenderer() {// 表格颜色设置
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
if (row % 2 == 0)
setBackground(Color.white);
else
setBackground(new Color(118, 153, 196));
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
};
for (int i = 0; i < columns.size(); i++) {
jtable.getColumn(columns.get(i)).setCellRenderer(ter);
}
jscrollPane = new JScrollPane(jtable, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
jscrollPane.setLocation(35, 67);
jscrollPane.setSize(663, 333);
jscrollPane.setPreferredSize(new Dimension(730, 320));
jscrollPane.getViewport().setBackground(Color.WHITE);
// 按钮部分
maskButton = new JButton("添加员工信息");
maskButton.setLocation(72, 20);
maskButton.setSize(105, 25);
maskButton.setMargin(new Insets(0, 0, 0, 0));
maskButton.setFont(new java.awt.Font("仿宋", Font.BOLD, 15));
maskButton.addActionListener(e -> {
Vector<Object> row = new Vector<>();
row.addElement(Integer.toString(count));
table.addRow(row);
count++;
});
suitButton = new JButton("查看职员信息");
suitButton.setLocation(239, 20);
suitButton.setSize(120, 25);
suitButton.setMargin(new Insets(0, 0, 0, 0));
suitButton.setFont(new java.awt.Font("仿宋", Font.BOLD, 15));
suitButton.addActionListener(e -> {
dispose();
new OverViewPanel();
});
deleteButton = new JButton("删除当前信息");
deleteButton.setLocation(409, 20);
deleteButton.setSize(112, 25);
deleteButton.setMargin(new Insets(0, 0, 0, 0));
deleteButton.setFont(new java.awt.Font("仿宋", Font.BOLD, 15));
deleteButton.addActionListener(e -> {
try {
table.removeRow(jtable.getSelectedRow());
} catch (Exception w) {
JOptionPane.showMessageDialog(this, "请选中一行");
}
});// 根据用户所选行删除
submitButton = new JButton("提交所有信息");
submitButton.setLocation(571, 20);
submitButton.setSize(105, 25);
submitButton.setMargin(new Insets(0, 0, 0, 0));
submitButton.setFont(new java.awt.Font("仿宋", Font.BOLD, 15));
submitButton.addActionListener(e -> {// 匿名类实现将提交数据添加至概览容器中用于展示
int rows = jtable.getRowCount();
int cols = jtable.getColumnCount();
for (int i = 0; i < rows; i++) {
Vector<String> row = new Vector<>();
for (int j = 0; j < cols; j++) {
if (jtable.getValueAt(i, j) != null)
row.addElement(jtable.getValueAt(i, j).toString());
else
row.addElement("");
}
derbydb.insertDB(row);
}
table.setRowCount(0);
repaint();
});
settingPanel.add(maskButton);
settingPanel.add(suitButton);
settingPanel.add(deleteButton);
settingPanel.add(submitButton);
settingPanel.add(jscrollPane);
settingPanel.setOpaque(false);
setContentPane(settingPanel);
}
public void setBackground() {// 背景设置
ImageIcon img = new ImageIcon(imagePaths);
((JPanel) this.getContentPane()).setOpaque(false);
img.setImage(img.getImage().getScaledInstance(760, 410, Image.SCALE_DEFAULT));
JLabel background = new JLabel(img);
this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
}
}
三、删改查界面OverViewPanel类:
package empsystem;
import java.awt.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
public class OverViewPanel extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel overViewPanel;
private JTextField searchtext;
private JButton searchButton, deleteButton,btnNewButton;
private JLabel message3;// 用于信息提示
private JScrollPane storejscroll;// 用于表格显示
private DefaultTableModel storetable;
private JTable jstoretable;
private Vector<String> columns;// 存储列数据
private Vector<Vector<String>> storedata; // 存储表格数据
private Derbydb derbydb;
private String imagePaths = "a.jpg";// 存储图片路径
/**
* Create the frame.
*/
public OverViewPanel() {
storedata = new Vector<>();
derbydb = new Derbydb();// 数据库操作
derbydb.selectDB(storedata, -1, null);
repaint();
setLocationRelativeTo(null);
setBounds(100, 100, 742, 440); // 继承JFrame底层容器,自定义大小和位置设置
setTitle("员工信息管理平台"); // 继承JFrame底层容器,设置标题
setVisible(true);// 设置窗口可见
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭窗口释放资源
setBackground();
derbydb = new Derbydb();// 数据库操作
overViewPanel = new JPanel();
overViewPanel.setLayout(null);
message3 = new JLabel("全部员工信息显示");
message3.setLocation(245, 10);
message3.setSize(239, 27);
message3.setForeground(Color.white);
message3.setFont(new Font("楷体", Font.BOLD, 27));
columns = new Vector<>();// 列表属性设置
columns.addElement("ID编号");
columns.addElement("姓名");
columns.addElement("性别");
columns.addElement("出生日期");
columns.addElement("地址");
columns.addElement("工资");
storetable = new DefaultTableModel(storedata, columns);
jstoretable = new JTable(storetable);
jstoretable.setEnabled(false);// 设置表格不可编辑
JTableHeader head1 = jstoretable.getTableHeader();// 表头样式设置
head1.setPreferredSize(new Dimension(head1.getWidth(), 25));
head1.setFont(new Font("楷体", Font.BOLD, 17));
head1.setForeground(Color.BLACK);
head1.setBackground(new Color(105, 132, 209));
jstoretable.setRowHeight(25);
jstoretable.setGridColor(Color.BLACK);
jstoretable.setBackground(Color.WHITE);
jstoretable.setFont(new Font("宋体", Font.BOLD, 15));
storejscroll = new JScrollPane(jstoretable, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
storejscroll.setLocation(34, 77);
storejscroll.setSize(641, 306);
storejscroll.setPreferredSize(new Dimension(730, 320));
storejscroll.getViewport().setBackground(Color.WHITE);
searchtext = new JTextField();
searchtext.setLocation(34, 10);
searchtext.setSize(130, 23);
searchtext.setFont(new Font("仿宋", Font.PLAIN, 13));
searchButton = new JButton("搜索");
searchButton.setLocation(174, 10);
searchButton.setSize(60, 23);
searchButton.setMargin(new Insets(0, 0, 0, 0));
searchButton.setFont(new Font("楷体", Font.BOLD, 15));
searchButton.addActionListener(e -> {// 绑定动作事件
Object[] options = { "id", "姓名", "性别", "出生", "地址", "工资" }; // 自定义按钮上的文字
int m = JOptionPane.showOptionDialog(null, "请选择按什么查询:", "Title", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
String searchname = searchtext.getText();
derbydb.selectDB(storedata, m, searchname);
if (storedata.size() == 0)
JOptionPane.showMessageDialog(null, "没有您要查询的信息!");
repaint();
});// 匿名类实现获取用户名密码信息
overViewPanel.add(searchtext);
overViewPanel.add(searchButton);
overViewPanel.add(message3);
deleteButton = new JButton("删除");
deleteButton.setLocation(505, 10);
deleteButton.setSize(73, 23);
deleteButton.setMargin(new Insets(0, 0, 0, 0));
deleteButton.setFont(new Font("楷体", Font.BOLD, 15));
deleteButton.addActionListener(e -> {
try {
String id = JOptionPane.showInputDialog(null, "请输入要删除的数据id号:");
derbydb.delectDB(id);
} catch (Exception w) {
System.out.println(w);
}
derbydb.selectDB(storedata, -1, null);
repaint();
});// 根据用户所选行删除
DefaultTableCellRenderer ter = new DefaultTableCellRenderer() {// 表格颜色设置
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
if (row % 2 == 0)
setBackground(Color.white);
else
setBackground(new Color(118, 153, 196));
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
};
overViewPanel.add(deleteButton);
for (int i = 0; i < columns.size(); i++) {// 表格颜色设置
jstoretable.getColumn(columns.get(i)).setCellRenderer(ter);
}
overViewPanel.add(storejscroll);
overViewPanel.setOpaque(false);
setContentPane(overViewPanel);
btnNewButton = new JButton("添加");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
new SettingPanel();
}
});
btnNewButton.setMargin(new Insets(0, 0, 0, 0));
btnNewButton.setFont(new Font("楷体", Font.BOLD, 15));
btnNewButton.setBounds(602, 10, 73, 23);
overViewPanel.add(btnNewButton);
JButton btnNewButton_1 = new JButton("显示全部员工信息");
btnNewButton_1.setMargin(new Insets(0, 0, 0, 0));
btnNewButton_1.setFont(new Font("楷体", Font.BOLD, 15));
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
derbydb.selectDB(storedata, -1, null);
repaint();
}
});
btnNewButton_1.setBounds(505, 43, 170, 23);
overViewPanel.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("修改当前信息");
btnNewButton_2.setMargin(new Insets(0, 0, 0, 0));
btnNewButton_2.setFont(new Font("楷体", Font.BOLD, 15));
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String id = JOptionPane.showInputDialog(null, "请输入要编辑的数据id号:");
Object[] options = { "id", "姓名", "性别", "出生", "地址", "工资" }; // 自定义按钮上的文字
int m = JOptionPane.showOptionDialog(null, "请要修改的属性:", "Title", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
String value = JOptionPane.showInputDialog(null, "请输入修改后的内容:");
derbydb.updateDB(id, m, value);
} catch (Exception w) {
System.out.println(w);
}
derbydb.selectDB(storedata, -1, null);
repaint();
}
});
btnNewButton_2.setBounds(34, 43, 130, 23);
overViewPanel.add(btnNewButton_2);
}
public void setStore(Vector<Vector<String>> store) {
storedata = store;
}
public void setBackground() {// 背景设置
ImageIcon img = new ImageIcon(imagePaths);
((JPanel) this.getContentPane()).setOpaque(false);
img.setImage(img.getImage().getScaledInstance(760, 410, Image.SCALE_DEFAULT));
JLabel background = new JLabel(img);
this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
}
}
四、数据库界面Derbydb类:
package empsystem;
import java.sql.*;
import java.util.Vector;
import javax.swing.JOptionPane;
public class Derbydb {
public void createDB() {
Connection con = null;
Statement sta = null;
String SQL = null;
ResultSet rs = null;
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");// 驱动
con = DriverManager.getConnection("jdbc:derby:移动公司;create=true");
} catch (Exception e) {
System.out.println(e);
}
try {
// 建表语句
sta = con.createStatement();
SQL = "create table 职员表" + "(id char(6) primary key,姓名 varchar(10),性别 char(6)"
+ ",出生 varchar(20),地址 varchar(50),工资 float)";
sta.executeUpdate(SQL);
} catch (Exception e) {
System.out.println("该表已存在,不需重建!" + e);
}
try {
SQL = "insert into 职员表 values('1','王林','男','1976-12-12','吉林',6654),('2','翠花','女','1982-10-12','北京',1654),('3','花翠','女','1984-12-12','大连',5654),('4','林王','男','1978-10-12','上海',2654)";
sta.executeUpdate(SQL);
} catch (Exception e) {
System.out.println("初始信息插入失败!" + e);
} finally {
close(rs, sta, con);
}
}
public void insertDB(Vector<String> trow) {
Connection con = null;
Statement sta = null;
String SQL = null;
ResultSet rs = null;
String id = trow.get(0);
String name = trow.get(1);
String sex = trow.get(2);
String birthday = trow.get(3);
String adds = trow.get(4);
Float wages = null;
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");// 驱动
con = DriverManager.getConnection("jdbc:derby:移动公司;create=true");
} catch (Exception e) {
System.out.println(e);
}
try {
sta = con.createStatement();
if (trow.get(5) != null)
wages = Float.parseFloat(trow.get(5));
else
wages = 0.0f;
SQL = "insert into 职员表 values('" + id + "','" + name + "','" + sex + "','" + birthday + "','" + adds + "',"
+ wages + ")";
sta.executeUpdate(SQL);
JOptionPane.showMessageDialog(null, "数据提交成功!");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "插入失败!,提交信息不合法,请重新运行该程序!");
System.out.println("插入失败!" + e);
} finally {
close(rs, sta, con);
}
}
public void selectDB(Vector<Vector<String>> storedata, int num, String value) {
Connection con = null;
Statement sta = null;
ResultSet rs = null;
String SQL = null;
String id = null;
String name = null;
String sex = null;
String brithday = null;
String adds = null;
String wages = null;
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");// 驱动
con = DriverManager.getConnection("jdbc:derby:移动公司;create=true");
} catch (Exception e) {
System.out.println(e);
}
try {
sta = con.createStatement();
if (num == 0) {
SQL = "select *from 职员表 where id ='" + value + "'";
} else if (num == 1) {
SQL = "select *from 职员表 where 姓名 ='" + value + "'";
} else if (num == 2) {
SQL = "select *from 职员表 where 性别 ='" + value + "'";
} else if (num == 3) {
SQL = "select *from 职员表 where 出生 ='" + value + "'";
} else if (num == 4) {
SQL = "select *from 职员表 where 地址 ='" + value + "'";
} else if (num == 5) {
SQL = "select *from 职员表 where 工资 =" + Float.parseFloat(value) + "";
} else {
SQL = "select *from 职员表";
}
rs = sta.executeQuery(SQL);
storedata.clear();
while (rs.next()) {
Vector<String> trow = new Vector<>();
id = rs.getString(1);
name = rs.getString(2);
sex = rs.getString(3);
brithday = rs.getString(4);
adds = rs.getString(5);
wages = rs.getString(6);
trow.addElement(id);
trow.addElement(name);
trow.addElement(sex);
trow.addElement(brithday);
trow.addElement(adds);
trow.addElement(wages);
storedata.addElement(trow);
}
} catch (Exception e) {
System.out.println("查找失败!" + e);
} finally {
close(rs, sta, con);
}
}
public void delectDB(String ID) {
Connection con = null;
Statement sta = null;
String SQL = null;
ResultSet rs = null;
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");// 驱动
con = DriverManager.getConnection("jdbc:derby:移动公司;create=true");
} catch (Exception e) {
System.out.println(e);
}
// 全部数据 找到对应条目清
try {
sta = con.createStatement();
SQL = "select *from 职员表 where id ='" + ID + "'";
rs = sta.executeQuery(SQL);
if (rs.next() == false) {
JOptionPane.showMessageDialog(null, "该条目不存在!");
} else {
sta.executeUpdate("delete from 职员表 where id = '" + ID + "'");
JOptionPane.showMessageDialog(null, "删除成功!");
}
} catch (Exception e) {
System.out.println("删除失败!" + e);
} finally {
close(rs, sta, con);
}
}
public void updateDB(String ID, int num, String value) {
Connection con = null;
Statement sta = null;
String SQL = null;
ResultSet rs = null;
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");// 驱动
con = DriverManager.getConnection("jdbc:derby:移动公司;create=true");
} catch (Exception e) {
System.out.println(e);
}
// 全部数据 找到对应条目清
try {
sta = con.createStatement();
SQL = "select *from 职员表 where id ='" + ID + "'";
rs = sta.executeQuery(SQL);
if (rs.next() == false) {
JOptionPane.showMessageDialog(null, "该条目不存在!");
} else {
if (num == 0) {
SQL = "update 职员表 set id = '" + value + "' where id='" + ID + "'";
} else if (num == 1) {
SQL = "update 职员表 set 姓名 = '" + value + "' where id='" + ID + "'";
} else if (num == 2) {
SQL = "update 职员表 set 性别 = '" + value + "' where id='" + ID + "'";
} else if (num == 3) {
SQL = "update 职员表 set 出生 = '" + value + "' where id='" + ID + "'";
} else if (num == 4) {
SQL = "update 职员表 set 地址 = '" + value + "' where id='" + ID + "'";
} else if (num == 5) {
SQL = "update 职员表 set 工资 = '" + value + "' where id='" + ID + "'";
}
sta.executeUpdate(SQL);
JOptionPane.showMessageDialog(null, "修改成功!");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "修改失败!" + e);
System.out.println("数据库修改失败!" + e);
} finally {
close(rs, sta, con);
}
}
public void close(ResultSet rs, Statement sta, Connection con) {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (sta != null) {
try {
sta.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
各文件存储路径如图所示:
从文件夹打开:
五、eclipse中项目打包成jar包:
六、界面展示: