[1]实验目的:了解数据库系统、关系模型、客户-服务器模式等基本概念,掌握SQL的数据定义、数据操纵和数据查询等语句的语法;了解JDBC各种数据库驱动程序类型,熟悉JDBC提供的接口和类,掌握指定驱动类型、连接数据库、执行SQL语句、处理结果集等操作方法。
[2]实验内容:
数据库应用程序
1)首先在数据库应用程序中创建数据库Studentinfo,按照下表的结构在数据库中建立"student"表。
字段名 |
Java数据类型 |
宽度 |
SQL数据类型 |
Name |
String |
10 |
Char(10) |
Sex |
String |
2 |
Char(2) |
Age |
Int |
3 |
Integer |
2)编写程序,a)向"student"表中填入若干数据记录;b)在"student"表中分别查询所有记录以及满足条件"age>18"的记录。c)编程创建学生成绩表,并进行数据插入、修改、删除、查询和成绩统计等操作。
注:不限定数据库类型。
//实现在表格已存在的情况下进行插入数据和查询操作
package experiment7;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.Objects;
class QueryJFrame extends JFrame{
private Connection connection;
private int flag=0;
public QueryJFrame(String driver, String url, String table, int flag, int x,int y) throws SQLException, ClassNotFoundException {
super(table);
this.flag = flag;
this.setBounds(x,y,700,320);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Class.forName(driver);
this.connection = DriverManager.getConnection(url);
JTable jTable = query(table);
this.getContentPane().add(new JScrollPane(jTable));
this.setVisible(true);
jTable.setEnabled(false);
}
public JTable query(String table) throws SQLException {
DefaultTableModel tableModel = new DefaultTableModel();
String sql;
if(flag == 0)
sql = "SELECT* FROM " + table;
else
sql = "SELECT* FROM " + table + " WHERE Age > 18";
Statement statement = this.connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
//添加表格组件标题
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();//返回表属性对象
int count = resultSetMetaData.getColumnCount();//列数
for (int j = 1; j <= count; j++)
tableModel.addColumn(resultSetMetaData.getColumnName(j));
//将结果集中各行数据添加至表格模型
Object[] columns = new Object[count];
while(resultSet.next()){
for (int j=1;j<=columns.length;j++)
columns[j-1] = resultSet.getString(j);
tableModel.addRow(columns);
}
resultSet.close();
statement.close();
return new JTable(tableModel);
}
}
class UpdateJFrame extends JFrame{
private Connection connection;
Statement statement;
public static boolean isNume(String str) {
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
public UpdateJFrame(String driver, String url, String table, int x,int y) throws SQLException, ClassNotFoundException {
super(table);
this.setBounds(x,y,500,100);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Class.forName(driver);
this.connection = DriverManager.getConnection(url);
this.statement = this.connection.createStatement();
JTextField name = new JTextField(14);
name.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (name.getText().equals("请输入5个字符以内的姓名")){
name.setText(""); //将提示文字清空
name.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (name.getText().equals("")){
name.setForeground(Color.gray); //将提示文字设置为灰色
name.setText("请输入5个字符以内的姓名"); //显示提示文字
}
}
});
this.add(new JLabel("姓名:"));
this.add(name);
JTextField Sex = new JTextField(10);
Sex.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (Sex.getText().equals("请输入性别")){
Sex.setText(""); //将提示文字清空
Sex.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (Sex.getText().equals("")){
Sex.setForeground(Color.gray); //将提示文字设置为灰色
Sex.setText("请输入性别"); //显示提示文字
}
}
});
this.add(new JLabel("性别:"));
this.add(Sex);
JTextField Age = new JTextField(6);
Age.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (Age.getText().equals("请输入数字")){
Age.setText(""); //将提示文字清空
Age.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (Age.getText().equals("")){
Age.setForeground(Color.gray); //将提示文字设置为灰色
Age.setText("请输入数字"); //显示提示文字
}
}
});
this.add(new JLabel("年龄: "));
this.add(Age);
JButton button = new JButton("更新");
button.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
if(Objects.equals(name.getText(), ""))
JOptionPane.showMessageDialog(null, "输入姓名","",JOptionPane.PLAIN_MESSAGE);
else if(!isNume(Age.getText())){JOptionPane.showMessageDialog(null, "年龄不合法","",JOptionPane.PLAIN_MESSAGE);}
else {
String sql = "INSERT INTO student(Name, Sex, Age) VALUES ";
sql+=" ('"+name.getText()+"', '" + Sex.getText()+ "', '" +Integer.parseInt(Age.getText()) +"');";
try {
statement.executeUpdate(sql);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
name.setText("");
Age.setText("");
Sex.setText("");
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
this.setLayout(new FlowLayout());
this.add(button);
this.setVisible(true);
}
}
class StudentDataBase extends JFrame{
public StudentDataBase(){
super("student");
}
public void main() throws ClassNotFoundException, SQLException {
this.setBounds(100,100,500,100);
String driverName="com.mysql.cj.jdbc.Driver";
String dbURL="jdbc:mysql://127.0.0.1/studentinfo?user=root&password=123456";
JButton b_update = new JButton("插入");
JButton b_query = new JButton("查询所有");
JButton b_query_selected = new JButton("查询18岁以上");
this.setLayout(new FlowLayout());
this.add(b_update);
this.add(b_query);
this.add(b_query_selected);
this.setVisible(true);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
b_update.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
//插入数据
try {
new UpdateJFrame(driverName,dbURL,"student",400,400);
} catch (SQLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
b_query.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
//查询所有
try {
new QueryJFrame(driverName,dbURL,"student",0,200,200);
} catch (SQLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
b_query_selected.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
//查询大于十八岁
try {
new QueryJFrame(driverName,dbURL,"student",1,300,300);
} catch (SQLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
}
}
public class Exp7_1 {
public static void main(String[] args){
StudentDataBase s = new StudentDataBase();
try {
s.main();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
主界面:
插入信息界面:
查询所有界面:
查询18岁以上界面:
//实现建立表格,进行增删改查等操作。
package experiment7;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.Objects;
class QueryJFrame2 extends JFrame{
private Connection connection;
private String sno;
private int flag=0;
public QueryJFrame2(String driver, String url, String table, int flag, int x,int y, String sno) throws SQLException, ClassNotFoundException {
super(table);
this.sno=sno;
this.setTitle("查询结果");
this.flag=flag;
this.setBounds(x,y,700,320);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Class.forName(driver);
this.connection = DriverManager.getConnection(url);
JTable jTable = query(table);
this.getContentPane().add(new JScrollPane(jTable));
this.setVisible(true);
jTable.setEnabled(false);
}
public JTable query(String table) throws SQLException {
DefaultTableModel tableModel = new DefaultTableModel();
String sql;
if(flag == 0)
sql = "SELECT* FROM " + table;
else
sql = "SELECT* FROM " + table + " WHERE sno = " + this.sno;
Statement statement = this.connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
//添加表格组件标题
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();//返回表属性对象
int count = resultSetMetaData.getColumnCount();//列数
for (int j = 1; j <= count; j++)
tableModel.addColumn(resultSetMetaData.getColumnName(j));
//将结果集中各行数据添加至表格模型
Object[] columns = new Object[count];
while(resultSet.next()){
for (int j=1;j<=columns.length;j++)
columns[j-1] = resultSet.getString(j);
tableModel.addRow(columns);
}
return new JTable(tableModel);
}
}
class InsertJFrame2 extends JFrame{
private Connection connection;
Statement statement;
public static boolean isNume(String str) {
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
public InsertJFrame2(String driver, String url, String table, int x,int y) throws SQLException, ClassNotFoundException {
super(table);
this.setTitle("插入");
this.setBounds(x,y,500,100);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Class.forName(driver);
this.connection = DriverManager.getConnection(url);
this.statement = this.connection.createStatement();
JTextField sno = new JTextField(14);
sno.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (sno.getText().equals("请输入10位以内学号")){
sno.setText(""); //将提示文字清空
sno.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (sno.getText().equals("")){
sno.setForeground(Color.gray); //将提示文字设置为灰色
sno.setText("请输入10位以内学号"); //显示提示文字
}
}
});
this.add(new JLabel("学号:"));
this.add(sno);
JTextField name = new JTextField(10);
name.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (name.getText().equals("请输入姓名")){
name.setText(""); //将提示文字清空
name.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (name.getText().equals("")){
name.setForeground(Color.gray); //将提示文字设置为灰色
name.setText("请输入姓名"); //显示提示文字
}
}
});
this.add(new JLabel("姓名:"));
this.add(name);
JTextField score = new JTextField(6);
score.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (score.getText().equals("请输入数字")){
score.setText(""); //将提示文字清空
score.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (score.getText().equals("")){
score.setForeground(Color.gray); //将提示文字设置为灰色
score.setText("请输入数字"); //显示提示文字
}
}
});
this.add(new JLabel("成绩:"));
this.add(score);
JButton button = new JButton("插入");
button.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
if(Objects.equals(sno.getText(), "") || !isNume(sno.getText()))
JOptionPane.showMessageDialog(null, "学号不合法","",JOptionPane.PLAIN_MESSAGE);
else if(!isNume(score.getText())){JOptionPane.showMessageDialog(null, "成绩不合法","",JOptionPane.PLAIN_MESSAGE);}
else {
String sql = "INSERT INTO studentscore(sno, name , score) VALUES ";
sql+=" ('"+sno.getText()+"', '" + name.getText()+ "', '" +Integer.parseInt(score.getText()) +"');";
try {
statement.executeUpdate(sql);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
name.setText("");
score.setText("");
sno.setText("");
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
this.setLayout(new FlowLayout());
this.add(button);
this.setVisible(true);
}
}
class DeleteJFrame2 extends JFrame{
private Connection connection;
Statement statement;
public static boolean isNume(String str) {
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
public DeleteJFrame2(String driver, String url, String table, int x,int y) throws SQLException, ClassNotFoundException {
super(table);
this.setTitle("删除");
this.setBounds(x,y,500,100);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Class.forName(driver);
this.connection = DriverManager.getConnection(url);
this.statement = this.connection.createStatement();
JTextField sno = new JTextField(14);
sno.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (sno.getText().equals("请输入10位以内学号")){
sno.setText(""); //将提示文字清空
sno.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (sno.getText().equals("")){
sno.setForeground(Color.gray); //将提示文字设置为灰色
sno.setText("请输入10位以内学号"); //显示提示文字
}
}
});
this.add(new JLabel("学号:"));
this.add(sno);
JButton button = new JButton("删除");
button.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
if(Objects.equals(sno.getText(), "") || !isNume(sno.getText()))
JOptionPane.showMessageDialog(null, "学号不合法","",JOptionPane.PLAIN_MESSAGE);
else {
String sql = "DELETE FROM studentscore WHERE (sno=";
System.out.println(sno.getText());
sql+="'"+sno.getText()+"');";
try {
statement.executeUpdate(sql);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
sno.setText("");
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
this.setLayout(new FlowLayout());
this.add(button);
this.setVisible(true);
}
}
class UpdataJFrame2 extends JFrame{
private Connection connection;
Statement statement;
public static boolean isNume(String str) {
for (int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
public UpdataJFrame2(String driver, String url, String table, int x,int y) throws SQLException, ClassNotFoundException {
super(table);
this.setTitle("更新");
this.setBounds(x,y,500,100);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Class.forName(driver);
this.connection = DriverManager.getConnection(url);
this.statement = this.connection.createStatement();
JTextField sno = new JTextField(14);
sno.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (sno.getText().equals("请输入10位以内学号")){
sno.setText(""); //将提示文字清空
sno.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (sno.getText().equals("")){
sno.setForeground(Color.gray); //将提示文字设置为灰色
sno.setText("请输入10位以内学号"); //显示提示文字
}
}
});
this.add(new JLabel("学号:"));
this.add(sno);
JTextField name = new JTextField(10);
name.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (name.getText().equals("请输入姓名")){
name.setText(""); //将提示文字清空
name.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (name.getText().equals("")){
name.setForeground(Color.gray); //将提示文字设置为灰色
name.setText("请输入姓名"); //显示提示文字
}
}
});
this.add(new JLabel("姓名:"));
this.add(name);
JTextField score = new JTextField(6);
score.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (score.getText().equals("请输入数字")){
score.setText(""); //将提示文字清空
score.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (score.getText().equals("")){
score.setForeground(Color.gray); //将提示文字设置为灰色
score.setText("请输入数字"); //显示提示文字
}
}
});
this.add(new JLabel("成绩:"));
this.add(score);
JButton button = new JButton("插入");
button.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
if(Objects.equals(sno.getText(), "") || !isNume(sno.getText()))
JOptionPane.showMessageDialog(null, "学号不合法","",JOptionPane.PLAIN_MESSAGE);
else if(!isNume(score.getText())){JOptionPane.showMessageDialog(null, "成绩不合法","",JOptionPane.PLAIN_MESSAGE);}
else {
String sql = "UPDATE studentscore SET name=" + "'"+name.getText()+"',"+"score=" + Integer.parseInt(score.getText()) +
" WHERE sno="+"'"+sno.getText()+"'";
try {
statement.executeUpdate(sql);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
name.setText("");
score.setText("");
sno.setText("");
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
this.setLayout(new FlowLayout());
this.add(button);
this.setVisible(true);
}
}
class StudentDataBase2 extends JFrame{
public void main() throws ClassNotFoundException, SQLException {
String driverName="com.mysql.cj.jdbc.Driver";
String dbURL="jdbc:mysql://127.0.0.1/studentinfo?user=root&password=123456";
Class.forName(driverName);
Connection connection=DriverManager.getConnection(dbURL);
Statement statement=connection.createStatement();
String sql="create table studentscore(sno char(10) primary key,name char(10),score numeric(3));";
statement.execute(sql);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
JButton b_insert = new JButton("插入");
JButton b_query = new JButton("查询所有");
JButton b_query_selected = new JButton("按学号查询");
JButton b_delete = new JButton("删除");
JButton b_update = new JButton("更新");
JTextField tf_sno = new JTextField(10);
tf_sno.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if (tf_sno.getText().equals("请输入学号")){
tf_sno.setText(""); //将提示文字清空
tf_sno.setForeground(Color.black); //设置用户输入的字体颜色为黑色
}
}
@Override
public void focusLost(FocusEvent e) {
if (tf_sno.getText().equals("")){
tf_sno.setForeground(Color.gray); //将提示文字设置为灰色
tf_sno.setText("请输入学号"); //显示提示文字
}
}
});
this.setLayout(new FlowLayout());
this.add(b_insert);
this.add(b_query);
this.add(new JLabel("学号:"));
this.add(tf_sno);
this.add(b_query_selected);
this.add(b_delete);
this.add(b_update);
this.setBounds(300,300,800,100);
this.setVisible(true);
this.setTitle("学生成绩管理程序");
b_insert.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
//插入数据
try {
new InsertJFrame2(driverName,dbURL,"studentsocre",400,400);
} catch (SQLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
b_query.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
//查询所有
try {
new QueryJFrame2(driverName,dbURL,"studentscore",0,200,200,tf_sno.getText());
} catch (SQLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
b_query_selected.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
//按学号查询
try {
new QueryJFrame2(driverName,dbURL,"studentscore",1,300,300, tf_sno.getText());
} catch (SQLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
b_delete.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
try {
new DeleteJFrame2(driverName,dbURL,"studentscore",200,200);
} catch (SQLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
b_update.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
try {
new UpdataJFrame2(driverName,dbURL,"studentscore",250,250);
} catch (SQLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
});
}
}
public class Exp7_2 {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
StudentDataBase2 s2 = new StudentDataBase2();
s2.main();
}
}
主界面:
插入信息界面:
查询所有界面:
按学号查询界面:
删除界面:
删除结果:
更新界面:
更新结果:
[3]实验分析
本实验实现了图形界面,采用swing编程。除去主菜单窗体外,还分别设计了新建窗体,删除窗体,查询窗体,更新窗体等。通过为每个按钮设置点击事件监听实现具体的过程。
在查询结果显示的实现中,我使用了JTable组件实现了数据库内容以表格形式的显示。