[JAVA] jdbc和JTable实现一个基本的数据库处理程序

在这里插入图片描述
功能如图
注意写这个程序是为了准备考试(只有2h时间)尽量快完成所以功能,不体现面向对象,不考虑鲁棒性

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.Vector;
import java.sql.*;
import javax.swing.JTable;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;

import org.omg.PortableInterceptor.ACTIVE;

import com.hxtt.global.s;


class GuiDemo {
	JFrame frame;
	JButton addButton,setButton,delButton,qryButton,showButton; 
	JLabel idJLabel,nameJLabel,dateJLabel;
	JTextField nameField,idTextField,dateTextField;
	JRadioButton menRButton,womenRButton;
	JTable jTable;
	DefaultTableModel dtm;
	JPanel panel1,panel2,panel3;
	JScrollPane scrollPane;
	
	Connection conn;
	Statement stmt;
	ResultSet rs;
	Vector<String> rowVector;
	Vector<Vector<String>> dataVector;
	public GuiDemo() throws Exception {
		// TODO Auto-generated constructor stub
		frame = new JFrame();
		Class.forName("com.hxtt.sql.access.AccessDriver");
		String url = "jdbc:Access:///C:/Users/student.accdb";
		conn = DriverManager.getConnection(url,"","");
		stmt = conn.createStatement();
		
		rowVector = new Vector<String>();
		rowVector.add("学号");
		rowVector.add("姓名");
		rowVector.add("性别");
		rowVector.add("出生日期");
		dtm = new DefaultTableModel();
		rs = stmt.executeQuery("select * from 学生表");
		showRs(rs);
		jTable = new JTable(dtm);
		jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		scrollPane = new JScrollPane(jTable);
		frame.add(scrollPane,BorderLayout.CENTER);
		/////////////////
		idJLabel = new JLabel("学号");
		idTextField = new JTextField(5);
		nameJLabel = new JLabel("姓名");
		nameField = new JTextField(5);
		menRButton = new JRadioButton("男");
		womenRButton = new JRadioButton("女");
		ButtonGroup bGroup = new ButtonGroup();
		bGroup.add(menRButton);
		bGroup.add(womenRButton);
		dateJLabel = new JLabel("出生日期");
		dateTextField = new JTextField(5);
		panel1 = new JPanel();
		panel1.setLayout(new GridLayout(2,1));
		panel2=new JPanel();
		panel2.setLayout(new FlowLayout());
		panel2.add(idJLabel);
		panel2.add(idTextField);
		panel2.add(nameJLabel);
		panel2.add(nameField);
		panel2.add(menRButton);
		panel2.add(womenRButton);
		panel2.add(dateJLabel);
		panel2.add(dateTextField);
		
		addButton = new JButton("添加");
		addButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub 
				String sexString = menRButton.isSelected()?"男":"女";
				Vector<String> row = new Vector<String>();
                row.add(idTextField.getText());
                row.add(nameField.getText());
                row.add(sexString);
                row.add(dateTextField.getText());
                dtm.addRow(row);
      
				String sqlString = "insert into 学生表 values ('"+idTextField.getText()+"','"+nameField.getText()+"','"+sexString+"','"+dateTextField.getText()+"')";
             // System.out.println(sqlString);
				try {
				//	connect();
					stmt.executeUpdate(sqlString);
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
		setButton = new JButton("修改");
		setButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String sexString = menRButton.isSelected()?"男":"女";
                int rowInt = jTable.getSelectedRow();
                if(idTextField.getText().equals("")) idTextField.setText(dtm.getValueAt(rowInt, 0).toString());
                if(nameField.getText().equals("")) nameField.setText(dtm.getValueAt(rowInt, 1).toString());
                if(dateTextField.getText().equals("")) dateTextField.setText(dtm.getValueAt(rowInt, 3).toString());

				String sqlString = "update 学生表 set 学号='"+idTextField.getText()+"',姓名='"+nameField.getText()+"',性别='"+sexString+"',出生日期='"+dateTextField.getText()+"' where 学号="+dtm.getValueAt(rowInt, 0);
            	dtm.setValueAt(idTextField.getText(), rowInt, 0);
            	dtm.setValueAt(nameField.getText(), rowInt, 1);
            	dtm.setValueAt(sexString, rowInt, 2);
            	dtm.setValueAt(dateTextField.getText(), rowInt, 3);
                System.out.println(""+rowInt+ sqlString);
				try {
				   stmt.executeUpdate(sqlString);
				} catch (SQLException e1) {
					e1.printStackTrace();
				}
			}
		});
		
		delButton = new JButton("删除");
		delButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				int rowInt = jTable.getSelectedRow();
				String sql = "delete from 学生表 where 学号='"+jTable.getValueAt(rowInt, 0)+"'";
				System.out.println(sql);
				try {
					stmt.executeUpdate(sql);
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				dtm.removeRow(rowInt);
			}
		});
		qryButton = new JButton("查询");
		qryButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String sqlString = "";
				if(!idTextField.getText().equals("")) 
					sqlString = "select * from 学生表 where 学号 = '" + idTextField.getText() +"'";
				else if(!nameField.getText().equals(""))
					sqlString = "select * from 学生表 where 姓名 = '" + nameField.getText() +"'";
				else if(!dateTextField.getText().equals(""))
					sqlString = "select * from 学生表 where 出生日期 = '" + dateTextField.getText() +"'";
				else 
					sqlString = "select * from 学生表 where 性别 = '" + (menRButton.isSelected()?"男":"女") +"'";
				try {
					rs = stmt.executeQuery(sqlString);
					showRs(rs);
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}

			}
		});
		showButton = new JButton("显示全部");
		showButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				try {
					rs = stmt.executeQuery("select * from 学生表");
					showRs(rs);
				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
		panel3=new JPanel();
		//panel3.setLayout(new GridLayout(1,5));
		panel3.add(addButton);
		panel3.add(setButton);
		panel3.add(delButton);
		panel3.add(qryButton);
		panel3.add(showButton);
		panel1.add(panel2);
		panel1.add(panel3);
		frame.add(panel1,BorderLayout.SOUTH);
		frame.setSize(450,400);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public void showRs(ResultSet rs) throws SQLException {
		dataVector = new Vector<Vector<String>>();
		while (rs.next()) {
			Vector<String> tpVector = new Vector<String>();
			for (int i = 1; i <= 4; i++)
				tpVector.add(rs.getString(i));
			dataVector.add(tpVector);
		}
		//System.out.println(dataVector.size());
		dtm.setDataVector(dataVector, rowVector);
	}
}

public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			new GuiDemo();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_33831360/article/details/103348494