使用Java Swing 的学生记录系统
考虑一个学校的场景,每天的教师、工作人员、当局需要查看学生的记录以用于各种目的,例如搜索特定学生的详细信息。手动浏览记录是一项乏味的工作,也很耗时。因此,最好开发允许用户插入、更新、搜索或删除记录的校内软件,而无需在每次出现查询时手动浏览文档。
在本文中,我们将了解如何使用Java Swing 快速创建应用程序,以使用 JDBC 在数据库中执行创建、检索和删除等操作。
在编写代码之前,需要牢记以下几点:
- JDBC API: Java数据库连接应用程序接口是一组接口和类,您可以使用它们编写用于访问和操作数据库的Java程序。它充当应用程序和数据库之间的通信。
- JDBC 驱动程序:它使Java应用程序能够与数据库进行交互。我们需要为不同的数据库设置不同的JDBC驱动。
创建应用程序的步骤:
1.首先,打开 Netbeans 并单击菜单栏中的文件选项。
2.现在通过单击新建项目 -> Java -> Java应用程序创建一个新的Java应用程序,并提供合适的项目名称并单击完成。
3 .现在通过再次转到菜单栏上的 File 选项来创建一个新文件,然后是 New File -> Swing GUI Forms -> JFrame Form ,并给出合适的文件名单击完成。
4.成功创建文件后,我们现在将看到以下屏幕。此窗口的 3 个重要部分是:
- 设计:这是我们将创建应用程序设计/模板的区域。
- 来源:这是编写程序逻辑代码的地方。
- 调色板:这个组件包含我们需要拖放到设计区域的所有小部件
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 类路径。
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();
在上面的代码中,需要记住以下几点:
- 连接类:它充当Java程序和特定数据库应用程序之间的连接会话。我们通过它向数据库发送 SQL 查询。
- Statement 类: Statement 是表示 SQL 语句的接口。
- ResultSet:当您执行 Statement 对象时,它们会生成 ResultSet 对象,它是表示数据库结果集的数据表。需要 Connection 对象来创建 Statement 对象。
- JDBC 驱动程序注册:要从Java应用程序打开到数据库的连接,应在设备管理器中注册 JDBC 驱动程序。因此我们使用语言包的forName() 。这里com.mysql.jdbc.Driver是 MySQL 的驱动程序名称。
- .getConnection():用于通过指定数据库名称(学生)、用户名(root)和密码(root)建立与数据库的物理连接。这将创建一个连接对象。
- 查询执行: createStatement()创建一个包含 SQL 查询的语句类型对象。然后executeQuery/executeUpdate方法执行SQL 语句。这里是“插入记录值……”。
- 数据提取:上述方法创建一个包含结果数据的结果集对象。 (现在看下面的代码) rs 是存储结果数据集的变量,因此我们使用.get
() 方法来获取数据。 - while(rs.next()):(见下面的代码)因为我们需要包含多行的数据,所以我们使用循环来访问它们。 next()方法将光标向前移动一行。
- 关闭打开的数据库:我们关闭所有打开的数据库以清理环境。因此我们使用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.键入代码后,右键单击屏幕上的任意位置,然后从下拉菜单中选择“运行文件”选项。最终输出如下所示。输入必要的详细信息,应用程序就准备好了!
输出: