前后用了一天多时间断断续续独立完成编码,成功跑起来的时候激动坏了, 第一次用了软件工程课上学到的方法工具来规划整个小项目,最后抽象出八个类 ,使用经典的工厂类设计模式。
ps:睡觉,,,
1: 工厂类
2:关闭工具类
3:增删改查类
4:增加界面类
5:删除界面类
6:查询界面类
7:选择操作界面类
8:登陆界面类
工厂类:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class FactoryClass { public Connection getConnection() { Connection con = null ; String url = "org.gjt.mm.mysql.Driver" ; try { Class.forName(url) ; }catch(ClassNotFoundException cfe) { cfe.printStackTrace(); }; try { con = DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root","include") ; }catch(SQLException se) { se.printStackTrace(); } return con ; } }
操作工具类
import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.sql.Connection; import java.sql.ResultSet; public class JDBCUtils { /**关闭结果集,语句块,连接 * * @param rs * @param st * @param con */ public static void close(ResultSet rs,PreparedStatement st,Connection con) { try { rs.close() ; st.close() ; con.close() ; }catch(SQLException se) { se.printStackTrace(); } } /**关闭语句块与连接 * * @param st * @param con */ public static void close(PreparedStatement st,Connection con) { try { st.close(); con.close(); }catch(SQLException se) { se.printStackTrace(); } } /** * 关闭连接 * */ public static void close(Connection con) { try { con.close(); }catch(SQLException se) { se.printStackTrace(); } } /** * 关闭结果集 */ public static void close(ResultSet rs) { try { rs.close(); }catch(SQLException se) { se.printStackTrace(); } } /** * 关闭语句块 */ public static void close(PreparedStatement st) { try { st.close(); }catch(SQLException se) { se.printStackTrace(); } } }
基础增删改查类
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class PeopleBiz { /*展示所有成员 * */ public void showAll() throws SQLException { FactoryClass factory = new FactoryClass() ; Connection con = factory.getConnection() ; String sql = "select * from people" ; PreparedStatement ps = con.prepareStatement(sql) ; ResultSet rs = ps.executeQuery() ; while(rs.next()) { String nameResult = rs.getString(2) ; String passwordResult = rs.getString(3) ; System.out.println("姓名:"+nameResult+" 密码:"+passwordResult) ; } JDBCUtils.close(rs,ps,con); } /** * 插入新成员 * @throws SQLException */ public void insertData(String name,String password) throws SQLException { FactoryClass factory = new FactoryClass() ; Connection con = factory.getConnection() ; String sql = "insert into people(name,password) values('"+name+"','"+password+"') "; PreparedStatement ps = con.prepareStatement(sql) ; ps.executeUpdate() ; JDBCUtils.close(ps,con); } /** * 按照名字为索引删除成员 * @throws SQLException */ public void deleteByName(String name) throws SQLException { FactoryClass factory = new FactoryClass() ; Connection con = factory.getConnection() ; String sql = "delete from people where name= '"+name+"' " ; PreparedStatement ps = con.prepareStatement(sql) ; ps.executeUpdate() ; JDBCUtils.close(ps,con); } /** * 更改数据库中的成员 * @throws SQLException */ public void updateDate(String name,String password) throws SQLException { FactoryClass factory = new FactoryClass() ; Connection con = factory.getConnection() ; String sql = "update people set(name,password) values('"+name+"' , '"+password+"')" ; PreparedStatement ps = con.prepareStatement(sql) ; ps.executeUpdate() ; JDBCUtils.close(ps,con); } public String[] selectByName(String name) throws SQLException { FactoryClass factory = new FactoryClass() ; Connection con = factory.getConnection() ; String sql = "select * from people where name= '"+name+"' " ; PreparedStatement ps = con.prepareStatement(sql) ; ResultSet rs = ps.executeQuery() ; String data[] = new String[2] ; while(rs.next()) { data[0] = rs.getString(1) ; data[1] = rs.getString(2) ; } return data ; } } /* * 下面开始编写测试主函数Tester */ /*class Tester { public static void main(String args[]) throws Exception { PeopleBiz p = new PeopleBiz() ; p.insertData("王如意", "include"); //p.deleteByName("王") ; p.showAll(); } }*/
登陆界面类
import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.border.Border; import javax.swing.border.EtchedBorder; import javax.swing.border.TitledBorder; public class Login extends JFrame { private JTextField nameText ; private JPasswordField passText ; public Login() { this.setTitle("数据库登陆"); this.setSize(330,230); this.setLocation(300,300); this.setResizable(false); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setVisible(true); JPanel mainpanel = new JPanel() ; mainpanel.setLayout(null); Border border = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED) ; mainpanel.setBorder(BorderFactory.createTitledBorder(border,"输入登陆信息",TitledBorder.CENTER,TitledBorder.TOP)); this.add(mainpanel,BorderLayout.CENTER) ; mainpanel.setLayout(null) ; JLabel nameLabel = new JLabel("输入用户名: ") ; nameLabel.setBounds(30,30,80,22); mainpanel.add(nameLabel) ; nameText = new JTextField() ; nameText.setBounds(115,30,120,22); mainpanel.add(nameText) ; JLabel passLabel = new JLabel("请输入密码: ") ; passLabel.setBounds(30,60,80,22); mainpanel.add(passLabel) ; passText = new JPasswordField() ; passText.setBounds(115,60,120,22) ; mainpanel.add(passText); JButton reset = new JButton("重置") ; JButton login = new JButton("登陆") ; reset.setBounds(40,90,60,20) ; login.setBounds(130,90,60,20); mainpanel.add(login) ; mainpanel.add(reset) ; reset.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { nameText.setText(""); passText.setText("") ; } }); login.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(nameText.getText().equals("daemon") && passText.getText().equals("include")) { JOptionPane.showMessageDialog(null, "欢迎进入系统","登陆成功",JOptionPane.INFORMATION_MESSAGE); new Option() ; } else JOptionPane.showMessageDialog(null, "古文!!!","doubi",JOptionPane.INFORMATION_MESSAGE); } }); } } class Tester { public static void main(String args[])throws Exception { new Login() ; } }
选择操作类
import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Option extends JFrame { JButton addButton = new JButton("增加") ; JButton deleteButton = new JButton("删除") ; JButton queryButton = new JButton("查询") ; public Option() { this.setTitle("请选择操作") ; this.setSize(330,230); this.setVisible(true); JPanel panel = new JPanel() ; panel.add(addButton) ; panel.add(deleteButton) ; panel.add(queryButton) ; this.add(panel,BorderLayout.CENTER); /** * 下面开始为三个时间按钮添加事件响应 */ addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new Add() ; } }); deleteButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub new Delete() ; } }); queryButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub new Query() ; } }); } }
以下为具体实现增删改查
//添加成员类 import java.awt.BorderLayout; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class Add extends JFrame { private JTextField nametext ; private JTextField passtext ; public Add() { this.setTitle("请输入要插入的成员信息"); this.setSize(400,400); this.setVisible(true); JPanel panel = new JPanel() ; panel.setLayout(null); JLabel namelab = new JLabel("姓名") ; namelab.setBounds(30,30,80,22); panel.add(namelab) ; this.nametext = new JTextField() ; this.nametext.setBounds(115,30,120,22); panel.add(nametext) ; JLabel passlab = new JLabel("密码") ; passlab.setBounds(30,60,80,22); panel.add(passlab) ; passtext = new JTextField() ; passtext.setBounds(115,60,120,22); panel.add(passtext) ; this.add(panel,BorderLayout.CENTER) ; JButton ok = new JButton("插入") ; this.add(ok,BorderLayout.SOUTH) ; ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String nameinput = nametext.getText(); String passinput = passtext.getText() ; boolean flag = false; PeopleBiz pb = new PeopleBiz() ; try { pb.insertData(nameinput, passinput); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } JOptionPane.showMessageDialog(null, "数据插入成功","插入结果",JOptionPane.INFORMATION_MESSAGE); } }); } } //删除成员类 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class Delete extends JFrame { private JTextField nametext ; private JButton ok ; public Delete() { this.setTitle("输入要删除的姓名") ; this.setVisible(true) ; this.setSize(400,400); JPanel panel = new JPanel() ; panel.setLayout(null) ; JLabel namelab= new JLabel("姓名") ; namelab.setBounds(30,30,80,22); panel.add(namelab) ; nametext = new JTextField() ; nametext.setBounds(115,30,120,22) ; panel.add(nametext) ; this.add(panel,BorderLayout.CENTER) ; this.ok = new JButton("确认删除") ; this.add(this.ok,BorderLayout.SOUTH) ; this.ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String deletename = nametext.getText() ; PeopleBiz p = new PeopleBiz() ; try { p.deleteByName(deletename); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } JOptionPane.showMessageDialog(null, "数据删除成功","反馈信息!",JOptionPane.INFORMATION_MESSAGE); } }); } } //查询界面类 import java.awt.BorderLayout; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class Query extends JFrame { private JTextField nametext ; private JTextField passtext ; public Query() { this.setTitle("所有查询成员信息!"); this.setSize(400,400); this.setVisible(true); JPanel panel = new JPanel() ; panel.setLayout(null); JLabel namelab = new JLabel("姓名") ; namelab.setBounds(30,30,80,22); panel.add(namelab) ; this.nametext = new JTextField() ; this.nametext.setBounds(115,30,120,22); panel.add(nametext) ; JLabel passlab = new JLabel("密码") ; passlab.setBounds(30,60,80,22); panel.add(passlab) ; passtext = new JTextField() ; passtext.setBounds(115,60,120,22); panel.add(passtext) ; this.add(panel,BorderLayout.CENTER) ; JButton ok = new JButton("查询") ; this.add(ok,BorderLayout.SOUTH) ; ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String nameinput = nametext.getText(); boolean flag = false; PeopleBiz pb = new PeopleBiz() ; try { String res[]=pb.selectByName(nameinput); passtext.setText(res[1]); JOptionPane.showMessageDialog(null, "查询结果已显示在密码框!","查询结果",JOptionPane.INFORMATION_MESSAGE); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } JOptionPane.showMessageDialog(null, "数据插入成功","插入结果",JOptionPane.INFORMATION_MESSAGE); } }); } }