📜  使用Java Swing 的学生记录系统

📅  最后修改于: 2022-05-13 01:54:23.685000             🧑  作者: Mango

使用Java Swing 的学生记录系统

考虑一个学校的场景,每天的教师、工作人员、当局需要查看学生的记录以用于各种目的,例如搜索特定学生的详细信息。手动浏览记录是一项乏味的工作,也很耗时。因此,最好开发允许用户插入、更新、搜索或删除记录的校内软件,而无需在每次出现查询时手动浏览文档。

在本文中,我们将了解如何使用Java Swing 快速创建应用程序,以使用 JDBC 在数据库中执行创建、检索和删除等操作。

在编写代码之前,需要牢记以下几点:

  1. JDBC API: Java数据库连接应用程序接口是一组接口和类,您可以使用它们编写用于访问和操作数据库的Java程序。它充当应用程序和数据库之间的通信。
  2. JDBC 驱动程序:它使Java应用程序能够与数据库进行交互。我们需要为不同的数据库设置不同的JDBC驱动。

通过 JDBC 驱动程序的Java应用程序和数据库交互的工作流程

创建应用程序的步骤:

1.首先,打开 Netbeans 并单击菜单栏中的文件选项。

Netbeans 主页

2.现在通过单击新建项目 -> Java -> Java应用程序创建一个新的Java应用程序,并提供合适的项目名称并单击完成。

3 .现在通过再次转到菜单栏上的 File 选项来创建一个新文件,然后是 New File -> Swing GUI Forms -> JFrame Form ,并给出合适的文件名单击完成。

4.成功创建文件后,我们现在将看到以下屏幕。此窗口的 3 个重要部分是:

  • 设计:这是我们将创建应用程序设计/模板的区域。
  • 来源:这是编写程序逻辑代码的地方。
  • 调色板:这个组件包含我们需要拖放到设计区域的所有小部件

成功创建Java文件后显示的窗口。

5.现在从位于窗口右侧的调色板中,开始拖动工具包小部件。

将组件从调色板拖到设计区域

6.由于我们需要以表格形式显示所有数据,因此将表格小部件从调色板拖到设计区域。现在要设置标题,右键单击表格,选择Properties -> Model ->Add/delete Columns

7.现在让我们创建数据库来存储数据。打开 MySQL 命令客户端,输入密码,输入以下命令创建新数据库、新表并定义属性。

mysql> create database student;
Query OK, 1 row affected (0.14 sec)

mysql> use student;
Database changed
mysql> create table record(
    -> rollno int(3),
    -> name char(20),
    -> class int(2),
    -> section char(2),
    -> address varchar(40));
Query OK, 0 rows affected (2.03 sec)

mysql> describe record;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| rollno  | int(3)      | YES  |     | NULL    |       |
| name    | char(20)    | YES  |     | NULL    |       |
| class   | int(2)      | YES  |     | NULL    |       |
| section | char(2)     | YES  |     | NULL    |       |
| address | varchar(40) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.03 sec)

回到 NetBeans,我们需要按照以下步骤进行数据库连接:

8.我们需要导入建立与数据库的连接和检索数据所需的库,这些库由DriverManager 类连接类语句类完成。因此转到菜单栏,在Tools->Libraries下, 并添加MySQL JDBC 连接器。记下 Library ClassPath 并单击 OK。现在转到项目工具栏并转到您的应用程序的库。右键单击并选择Add Jar/Library并浏览之前记下的 Library 类路径。

添加 jar 文件

添加mysql连接器

9. 转到Windows->Services->Databases并输入所需的 MySQL 用户名和密码凭据。点击测试连接后,如果连接成功,会出现连接器标志。

连接最初断开

10.现在键入代码,双击 jButton1 (Insert),您将被定向到源选项卡。在这里输入以下代码。

Java
// Write the import code at top
import java.sql.*;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
  
public class SchoolRecord extends javax.swing.JFrame {
  
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;
    // JButton1 Code starts from here
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/student", "root",
            "root");
        stmt = con.createStatement();
        String rollno = jTextField1.getText();
        String name = jTextField2.getText();
        String clss = jTextField3.getText();
        String sec = jTextField4.getText();
        String adr = jTextArea1.getText();
        String INSERT = "INSERT INTO RECORD VALUES('"
                        + rollno + "','" + name + "','"
                        + clss + "','" + sec + "','" + adr
                        + "');";
        stmt.executeUpdate(INSERT);
        JOptionPane.showMessageDialog(
            this, "Record Added Successfully");
        jButton1.setEnabled(true);
    }
    catch (Exception e) {
        JOptionPane.showMessageDialog(
            this, "Error In Connectivity");
    }


Java
DefaultTableModel model
    = (DefaultTableModel)jTable1.getModel();
try {
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection(
        "jdbc:mysql://localhost:3306/student", "root",
        "root");
    String query = "SELECT* FROM RECORD;";
    ResultSet rs = stmt.executeQuery(query);
    while (rs.next()) {
        String rollno = rs.getString("rollno");
        String name = rs.getString("name");
        String clss = rs.getString("class");
        String sec = rs.getString("section");
        String adr = rs.getString("address");
        model.addRow(
            new Object[] { rollno, name, clss, sec, adr });
    }
    rs.close();
    stmt.close();
    con.close();
}
catch (Exception e) {
    JOptionPane.showMessageDialog(this,
                                  "Error In Connectivity");
}


Java
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");
jTextArea1.setText("");
DefaultTableModel dm
    = (DefaultTableModel)jTable1.getModel();
dm.getDataVector().removeAllElements();
jTable1.repaint();


在上面的代码中,需要记住以下几点:

  1. 连接类:它充当Java程序和特定数据库应用程序之间的连接会话。我们通过它向数据库发送 SQL 查询。
  2. Statement 类: Statement 是表示 SQL 语句的接口。
  3. ResultSet:当您执行 Statement 对象时,它们会生成 ResultSet 对象,它是表示数据库结果集的数据表。需要 Connection 对象来创建 Statement 对象。
  4. JDBC 驱动程序注册:要从Java应用程序打开到数据库的连接,应在设备管理器中注册 JDBC 驱动程序。因此我们使用语言包的forName() 。这里com.mysql.jdbc.Driver是 MySQL 的驱动程序名称。
  5. .getConnection():用于通过指定数据库名称(学生)、用户名(root)和密码(root)建立与数据库的物理连接。这将创建一个连接对象。
  6. 查询执行: createStatement()创建一个包含 SQL 查询的语句类型对象。然后executeQuery/executeUpdate方法执行SQL 语句。这里是“插入记录值……”。
  7. 数据提取:上述方法创建一个包含结果数据的结果集对象。 (现在看下面的代码) rs 是存储结果数据集的变量,因此我们使用.get()方法来获取数据。
  8. while(rs.next()):(见下面的代码)因为我们需要包含多行的数据,所以我们使用循环来访问它们。 next()方法将光标向前移动一行。
  9. 关闭打开的数据库:我们关闭所有打开的数据库以清理环境。因此我们使用rs.close() 、 stmt.close() 和 con.close()方法。  

11.现在要显示所有数据,在jButton2 ActionPerformed选项下编写以下代码,可以通过在设计区域中双击View Data Button来实现。

Java

DefaultTableModel model
    = (DefaultTableModel)jTable1.getModel();
try {
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection(
        "jdbc:mysql://localhost:3306/student", "root",
        "root");
    String query = "SELECT* FROM RECORD;";
    ResultSet rs = stmt.executeQuery(query);
    while (rs.next()) {
        String rollno = rs.getString("rollno");
        String name = rs.getString("name");
        String clss = rs.getString("class");
        String sec = rs.getString("section");
        String adr = rs.getString("address");
        model.addRow(
            new Object[] { rollno, name, clss, sec, adr });
    }
    rs.close();
    stmt.close();
    con.close();
}
catch (Exception e) {
    JOptionPane.showMessageDialog(this,
                                  "Error In Connectivity");
}

12.现在要清除所有的文本字段,文本区域和表格内容,在jButton3 ActionPerformed选项下编写以下代码,可以通过在设计区域中单击两次Clear Button来实现。

Java

jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");
jTextArea1.setText("");
DefaultTableModel dm
    = (DefaultTableModel)jTable1.getModel();
dm.getDataVector().removeAllElements();
jTable1.repaint();

13.现在要退出系统,在jButton4 ActionPerformed选项下添加如下语句,在设计区双击Exit Button即可实现。

System.exit(0);

14.键入代码后,右键单击屏幕上的任意位置,然后从下拉菜单中选择“运行文件”选项。最终输出如下所示。输入必要的详细信息,应用程序就准备好了!

插入数据

查看数据

输出: