JavaSwing结合jdbc连接数据库增删改查之评分系统
JavaSwing结合jdbc连接数据库增删改查简单案例:
评分系统
1、swing界面
1.1 主题(健康、明确); 1.2 内容(层次清楚、逻辑严密、重点、观点鲜明)
1.3 体态语(多余动作,或表情太僵硬); 1.4 声音(洪亮,普通话是否标准)
2、角色。
学生类、评委类
3、录入学生信息、选中某个学生进行打分
4、把打分结果持久化到文件
学号、姓名、综合分数、每一项分数
5、提供查询功能, 系统重启之后也能方便的查某个学生的打分记录。
添加查询条件:学号、姓名。重名可查出多个结果。
5.1 缓存查询条件;
5.2 读取所有学生的打分记录到内存Map。
5.3 用查询条件过滤。
6、提供查询所有学生打分列表的功能按钮。
7、结果按打分的高低排序。
首先看一下实现效果:

插入数据试试:

然后查看全部数据:

按条件查询试试:

删除全部数据试试:

接下来看代码:
先贴JDBC增删改查的代码块:
评分块:
ratingBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { // 评分if(e.getActionCommand().equals("评分")){try {String sId = stuId.getText();String sName = stuName.getText();String sSub = stuSubject.getText();String sCon = stuContent.getText();String sPro = stuPosture.getText();String sSound = stuSound.getText();Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "");st = conn.createStatement();String sql = "insert IGNORE into student values(?,?,?,?,?,?)";PreparedStatement pst = (PreparedStatement)conn.prepareStatement(sql);pst.setObject(1,sId);pst.setObject(2,sName);pst.setObject(3,sSub);pst.setObject(4,sCon);pst.setObject(5,sPro);pst.setObject(6,sSound);pst.executeUpdate(); FileOutputStream fos = new FileOutputStream("D:\\QQQ\\committeeFile.txt");ObjectOutputStream oos = new ObjectOutputStream(fos);oos.writeObject(list);oos.flush();oos.close();}catch (Exception ex) {// TODO Auto-generated catch blockex.printStackTrace();} finally {//5.释放资源 关闭连接try {if(rs!=null) {rs.close();}if(st!=null) {st.close();}if(conn!=null) {conn.close();}} catch (SQLException ex) {// TODO Auto-generated catch blockex.printStackTrace();}}}}});
查询全部块:
selectAllBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { // 查询全部try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "");st = conn.createStatement();rs = st.executeQuery("select * from student");sb = new StringBuilder();while(rs.next()) {//通过数据库字段名称得到对应的值String sId = rs.getString("sId");String sName = rs.getString("sName");String sSub = rs.getString("sSub");String sCon = rs.getString("sCon");String sPro = rs.getString("sPro");String sSound = rs.getString("sSound");sb.append("学号:"+sId+","+"姓名:"+sName+","+"主题:"+sSub+","+"内容:"+sCon+","+"体态:"+sPro+","+"声音:"+sSound+"\n");show.setText(sb.toString());}} catch (Exception ex) {System.out.println("读取文件内容出错");ex.printStackTrace();}finally {//5.释放资源 关闭连接try {if(rs!=null) {rs.close();}if(st!=null) {st.close();}if(conn!=null) {conn.close();}}catch (SQLException ex) {// TODO Auto-generated catch blockex.printStackTrace();}}}});
按条件查询块:
selectBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { //通过姓名查询try {ResultSet rs = null;Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "");st = conn.createStatement();System.out.println("测试点3");String sql ="select * from student where sName = ?";pst = (PreparedStatement) conn.prepareStatement(sql);pst.setString(1,name.getText());rs = pst.executeQuery();sb = new StringBuilder();System.out.println(rs.next());// System.out.println("测试点3"+rs.getString("sId"));sb.append("学号:"+rs.getString("sId")+","+"姓名:"+rs.getString("sName")+","+"主题:"+rs.getString("sSub")+","+"内容:"+rs.getString("sCon")+","+"体态:"+rs.getString("sPro")+","+"声音:"+rs.getString("sSound")+"\n");show.setText(sb.toString());}catch(Exception ex) {System.out.println("读取文件内容出错");ex.printStackTrace();}finally{//5.释放资源 关闭连接try {if(rs!=null) {rs.close();}if(st!=null) {st.close();}if(conn!=null) {conn.close();}}catch (SQLException ex) {ex.printStackTrace();}}}});
删除全部块:
delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { //删除全部try {boolean flag = false;conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "");final String sql = "DELETE FROM student";pst = (PreparedStatement) conn.prepareStatement(sql);int i = pst.executeUpdate();if(i>0) {flag = true;System.out.println("删除成功");conn.commit();}else{flag = false;System.out.println("删除失败");conn.rollback();}} catch (Exception e2){}finally{try {if(rs!=null) {rs.close();}if(st!=null) {st.close();}if(conn!=null) {conn.close();}}catch (SQLException ex) {ex.printStackTrace();}}}});
我可能写的比较混乱,只用了俩个类,还有一些重复的代码,后期再做整理。
Student类:
package com.rating;
/*** 与其终的学生类*/
import java.io.Serializable;public class Student implements Serializable{private static final long serialVersionUID = -32406912425067303L;private String sId;private String sName;private String sSub;private String sCon;private String sPro;private String sSound;public Student(String sId, String sName, String sSub, String sCon, String sPro, String sSound) {super();this.sId = sId;this.sName = sName;this.sSub = sSub;this.sCon = sCon;this.sPro = sPro;this.sSound = sSound;}public String getsId() {return sId;}public void setsId(String sId) {this.sId = sId;}public String getsName() {return sName;}public void setsName(String sName) {this.sName = sName;}public String getsSub() {return sSub;}public void setsSub(String sSub) {this.sSub = sSub;}public String getsCon() {return sCon;}public void setsCon(String sCon) {this.sCon = sCon;}public String getsPro() {return sPro;}public void setsPro(String sPro) {this.sPro = sPro;}public String getsSound() {return sSound;}public void setsSound(String sSound) {this.sSound = sSound;}@Overridepublic String toString() {return "学号:" + sId + ", 姓名:" + sName + ", 主题:" + sSub + ", 内容:" + sCon + ", 体态:" + sPro+ ", 声音:" + sSound;}
}
MainFrame类:
package com.rating;
/*** 与其终的评分系统*/
import java.awt.EventQueue;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;import com.mysql.jdbc.PreparedStatement;public class MainFrame extends JFrame {private static final long serialVersionUID = 1273115169936569895L;private JPanel contentPane;private JTextField stuId;private JTextField stuName;private JTextField stuSubject;private JTextField stuContent;private JTextField stuPosture;private JTextField stuSound;private JTextField name;Connection conn = null;Statement st = null;ResultSet rs = null;PreparedStatement pst = null;public static ArrayList<Student> list = new ArrayList<Student>();;private TextArea show = new TextArea();StringBuilder sb = null;//FileOutputStream fos = null;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {InputStream fileInputStream =null;ObjectInputStream objis =null;try {fileInputStream= new FileInputStream("D:\\QQQ\\committeeFile.txt");objis = new ObjectInputStream(fileInputStream);list = (ArrayList<Student>)objis.readObject();if(list.size()==0){list= new ArrayList<>();}} catch (Exception e2) {// TODO: handle exceptionSystem.out.println(e2.toString());}finally{if(fileInputStream!=null){try {fileInputStream.close();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}if(objis!=null){try {objis.close();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}MainFrame frame = new MainFrame();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public MainFrame() {setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 820, 369);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);JLabel label = new JLabel("\u5B66\u751F\u4FE1\u606F\uFF1A");label.setBounds(20, 20, 90, 21);JLabel label_1 = new JLabel("\u5B66\u53F7\uFF1A");label_1.setBounds(20, 56, 54, 21);JLabel label_2 = new JLabel("\u59D3\u540D\uFF1A");label_2.setBounds(22, 87, 54, 21);stuId = new JTextField();stuId.setBounds(80, 50, 96, 27);stuId.setColumns(10);stuName = new JTextField();stuName.setBounds(80, 84, 96, 27);stuName.setColumns(10);JLabel lblNewLabel = new JLabel("\u4E3B\u9898\uFF1A");lblNewLabel.setBounds(20, 123, 54, 21);stuSubject = new JTextField();stuSubject.setBounds(82, 120, 96, 27);stuSubject.setColumns(10);JLabel label_3 = new JLabel("");label_3.setBounds(25, 156, 0, 0);JLabel label_4 = new JLabel("\u5185\u5BB9\uFF1A");label_4.setBounds(22, 162, 54, 21);stuContent = new JTextField();stuContent.setBounds(82, 159, 96, 27);stuContent.setColumns(10);JLabel label_5 = new JLabel("\u4F53\u6001\uFF1A");label_5.setBounds(20, 198, 54, 21);stuPosture = new JTextField();stuPosture.setBounds(83, 195, 96, 27);stuPosture.setColumns(10);JLabel lblNewLabel_1 = new JLabel("\u58F0\u97F3\uFF1A");lblNewLabel_1.setBounds(23, 235, 54, 21);stuSound = new JTextField();stuSound.setBounds(83, 232, 96, 27);stuSound.setColumns(10);JButton ratingBtn = new JButton("\u8BC4\u5206");ratingBtn.setBounds(24, 274, 155, 29);ratingBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { // 评分if(e.getActionCommand().equals("评分")){try {String sId = stuId.getText();String sName = stuName.getText();String sSub = stuSubject.getText();String sCon = stuContent.getText();String sPro = stuPosture.getText();String sSound = stuSound.getText();Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "");st = conn.createStatement();String sql = "insert IGNORE into student values(?,?,?,?,?,?)";PreparedStatement pst = (PreparedStatement)conn.prepareStatement(sql);pst.setObject(1,sId);pst.setObject(2,sName);pst.setObject(3,sSub);pst.setObject(4,sCon);pst.setObject(5,sPro);pst.setObject(6,sSound);pst.executeUpdate(); FileOutputStream fos = new FileOutputStream("D:\\QQQ\\committeeFile.txt");ObjectOutputStream oos = new ObjectOutputStream(fos);oos.writeObject(list);oos.flush();oos.close();}catch (Exception ex) {// TODO Auto-generated catch blockex.printStackTrace();} finally {//5.释放资源 关闭连接try {if(rs!=null) {rs.close();}if(st!=null) {st.close();}if(conn!=null) {conn.close();}} catch (SQLException ex) {// TODO Auto-generated catch blockex.printStackTrace();}}}}});JTextArea show = new JTextArea();show.setBounds(199, 55, 463, 248);JButton selectAllBtn = new JButton("\u67E5\u8BE2\u5168\u90E8");selectAllBtn.setBounds(677, 52, 106, 29);selectAllBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { // 查询全部try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "");st = conn.createStatement();rs = st.executeQuery("select * from student");sb = new StringBuilder();while(rs.next()) {//通过数据库字段名称得到对应的值String sId = rs.getString("sId");String sName = rs.getString("sName");String sSub = rs.getString("sSub");String sCon = rs.getString("sCon");String sPro = rs.getString("sPro");String sSound = rs.getString("sSound");sb.append("学号:"+sId+","+"姓名:"+sName+","+"主题:"+sSub+","+"内容:"+sCon+","+"体态:"+sPro+","+"声音:"+sSound+"\n");show.setText(sb.toString());}} catch (Exception ex) {System.out.println("读取文件内容出错");ex.printStackTrace();}finally {//5.释放资源 关闭连接try {if(rs!=null) {rs.close();}if(st!=null) {st.close();}if(conn!=null) {conn.close();}}catch (SQLException ex) {// TODO Auto-generated catch blockex.printStackTrace();}}}});JLabel label_6 = new JLabel("\u67E5\u8BE2\uFF1A");label_6.setBounds(199, 20, 54, 21);JLabel label_7 = new JLabel("\u59D3\u540D\uFF1A");label_7.setBounds(413, 20, 54, 21);name = new JTextField();name.setBounds(482, 17, 96, 27);name.setColumns(10);JButton selectBtn = new JButton("\u67E5\u8BE2");selectBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { //通过姓名查询try {ResultSet rs = null;Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "");st = conn.createStatement();System.out.println("测试点3");String sql ="select * from student where sName = ?";pst = (PreparedStatement) conn.prepareStatement(sql);pst.setString(1,name.getText());rs = pst.executeQuery();sb = new StringBuilder();System.out.println(rs.next());// System.out.println("测试点3"+rs.getString("sId"));sb.append("学号:"+rs.getString("sId")+","+"姓名:"+rs.getString("sName")+","+"主题:"+rs.getString("sSub")+","+"内容:"+rs.getString("sCon")+","+"体态:"+rs.getString("sPro")+","+"声音:"+rs.getString("sSound")+"\n");show.setText(sb.toString());}catch(Exception ex) {System.out.println("读取文件内容出错");ex.printStackTrace();}finally{//5.释放资源 关闭连接try {if(rs!=null) {rs.close();}if(st!=null) {st.close();}if(conn!=null) {conn.close();}}catch (SQLException ex) {ex.printStackTrace();}}}});selectBtn.setBounds(593, 16, 69, 29);JButton delete = new JButton("\u5220\u9664\u5168\u90E8");delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { //删除全部try {boolean flag = false;conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "");final String sql = "DELETE FROM student";pst = (PreparedStatement) conn.prepareStatement(sql);int i = pst.executeUpdate();if(i>0) {flag = true;System.out.println("删除成功");conn.commit();}else{flag = false;System.out.println("删除失败");conn.rollback();}} catch (Exception e2){}finally{try {if(rs!=null) {rs.close();}if(st!=null) {st.close();}if(conn!=null) {conn.close();}}catch (SQLException ex) {ex.printStackTrace();}}}});delete.setBounds(677, 96, 105, 29);contentPane.setLayout(null);contentPane.add(label);contentPane.add(label_1);contentPane.add(stuName);contentPane.add(stuId);contentPane.add(label_2);contentPane.add(label_3);contentPane.add(lblNewLabel);contentPane.add(label_4);contentPane.add(stuSubject);contentPane.add(stuContent);contentPane.add(ratingBtn);contentPane.add(label_5);contentPane.add(lblNewLabel_1);contentPane.add(stuSound);contentPane.add(stuPosture);contentPane.add(show);contentPane.add(selectAllBtn);contentPane.add(delete);contentPane.add(label_6);contentPane.add(label_7);contentPane.add(name);contentPane.add(selectBtn);}
}
我是与其终,一个风起云涌的女孩子。
以下是我的公众号,主要写的是有关于前段后台数据库,面试技巧,学习方法,职场心得等,感兴趣的可以关注一下哦。

很高兴你能看到我的博客,希望能对你有所帮助。
qq群:可直接扫码进qq群,或者输入群号670983672。
微信群:可加下方博主微信,备注“进群”即可。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
