1. 自选数据库管理系统创建数据库stu,按照下表的结构创建"student"表: 字段名 Java 数据类型 宽度 SQL 数据类型 id int 10 int Name String 20 Char(20) Sex String 2 Char(2) Age Int 3 Integer id Name Sex Age 1 张小明 男 18 2 李雷 男 19 3 韩梅梅 女 18 4. 将数据表 stu 及其数据操作封装成类, 将数据操作功能封装成类的方法, 通过该类, 借助图形用户界面实现下面功能: (1) 向表中增加记录并显示增加后的所有记录(新增记录的具体数据自定); (2) 从表中删除 id=1 的记录, 并显示删除后的所有记录; (3) 修改表中记录: 查询条件 id=2,将 name 修改为: 王杰,修改完毕显示所有记录; (4) 查询表中 id=3 的记录并显示。编写该代码

时间: 2024-03-02 20:50:17 浏览: 27
下面是一个示例代码,实现了上述要求: Student.java: ```java public class Student { private int id; private String name; private String sex; private int age; public Student(int id, String name, String sex, int age) { this.id = id; this.name = name; this.sex = sex; this.age = age; } // getter and setter methods public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { return "id: " + id + ", name: " + name + ", sex: " + sex + ", age: " + age; } } ``` StudentDAO.java: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class StudentDAO { private String url; private String username; private String password; public StudentDAO(String url, String username, String password) { this.url = url; this.username = username; this.password = password; } public void add(Student student) throws SQLException { Connection conn = null; PreparedStatement stmt = null; try { conn = DriverManager.getConnection(url, username, password); String sql = "INSERT INTO student (id, name, sex, age) VALUES (?, ?, ?, ?)"; stmt = conn.prepareStatement(sql); stmt.setInt(1, student.getId()); stmt.setString(2, student.getName()); stmt.setString(3, student.getSex()); stmt.setInt(4, student.getAge()); stmt.executeUpdate(); } finally { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } public void delete(int id) throws SQLException { Connection conn = null; PreparedStatement stmt = null; try { conn = DriverManager.getConnection(url, username, password); String sql = "DELETE FROM student WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, id); stmt.executeUpdate(); } finally { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } public void update(int id, String name) throws SQLException { Connection conn = null; PreparedStatement stmt = null; try { conn = DriverManager.getConnection(url, username, password); String sql = "UPDATE student SET name = ? WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, name); stmt.setInt(2, id); stmt.executeUpdate(); } finally { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } public Student findById(int id) throws SQLException { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection(url, username, password); String sql = "SELECT * FROM student WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, id); rs = stmt.executeQuery(); if (rs.next()) { return new Student(rs.getInt("id"), rs.getString("name"), rs.getString("sex"), rs.getInt("age")); } return null; } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } public List<Student> findAll() throws SQLException { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection(url, username, password); String sql = "SELECT * FROM student"; stmt = conn.prepareStatement(sql); rs = stmt.executeQuery(); List<Student> students = new ArrayList<>(); while (rs.next()) { students.add(new Student(rs.getInt("id"), rs.getString("name"), rs.getString("sex"), rs.getInt("age"))); } return students; } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } } ``` Main.java: ```java import java.sql.SQLException; import java.util.List; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/stu?useSSL=false&serverTimezone=UTC"; String username = "root"; String password = "123456"; StudentDAO dao = new StudentDAO(url, username, password); try { // add a new student Student newStudent = new Student(5, "刘德华", "男", 21); dao.add(newStudent); List<Student> students = dao.findAll(); System.out.println("After adding:"); for (Student student : students) { System.out.println(student); } // delete a student by id dao.delete(1); students = dao.findAll(); System.out.println("After deleting:"); for (Student student : students) { System.out.println(student); } // update a student's name by id dao.update(2, "王杰"); students = dao.findAll(); System.out.println("After updating:"); for (Student student : students) { System.out.println(student); } // find a student by id Student student = dao.findById(3); System.out.println("Student with id=3: " + student); // display all students students = dao.findAll(); System.out.println("All students:"); for (Student s : students) { System.out.println(s); } // display students in a dialog StringBuilder sb = new StringBuilder(); for (Student s : students) { sb.append(s).append("\n"); } JOptionPane.showMessageDialog(null, sb.toString(), "All students", JOptionPane.INFORMATION_MESSAGE); } catch (SQLException ex) { ex.printStackTrace(); } } } ``` 这个示例代码使用MySQL数据库,需要先安装MySQL并创建一个名为"stu"的数据库。在运行Main类之前,需要确保MySQL服务已经启动,并修改url、username和password变量为正确的值。

相关推荐

最新推荐

recommend-type

mysql数据库实验报告 数据表的操作

MySQL数据库的创建、查看、删除、使用命令。 表结构创建和修改、表约束的创建和修改; 表数据的插入、删除和修改; 表联系的创建和修改。
recommend-type

Java学生信息管理系统设计(数据库版)

Java学生信息管理系统设计是一个常见的项目,它通过使用Java编程语言和数据库技术来实现对学生信息的管理。这个系统通常包括学生的基本信息录入、查询、删除、修改和显示等功能,旨在提高教育机构对学生数据管理的...
recommend-type

用sql修改基本表及其更新表中数据

修改基本表的基本语句: ALTER TABLE [ ADD[COLUMN] [ 完整性约束 ] ] [ ADD ] [ DROP [ COLUMN ] [CASCADE| RESTRICT] ] ... 向基本表student中增加phoneno列,数据类型为int型。 alter table stu
recommend-type

java 创建自定义数组

在Java编程语言中,创建自定义数组意味着我们不使用基本数据类型(如int、double等)来创建数组,而是使用自定义的类实例。自定义类通常包含特定于业务逻辑的属性和方法。在这个例子中,`Student` 类被用作自定义...
recommend-type

学籍管理系统 JAVA编写 数据库SQL2005 学籍管理系统

JAVA编写 数据库SQL2005 学籍管理系统 毕业论文 包含程序截图,需求分析 系统分析等 JAVA编写 数据库SQL2005 学籍管理系统 毕业论文 包含程序截图,需求分析 系统分析等毕业论文 包含程序截图,需求分析 系统分析等
recommend-type

基于嵌入式ARMLinux的播放器的设计与实现 word格式.doc

本文主要探讨了基于嵌入式ARM-Linux的播放器的设计与实现。在当前PC时代,随着嵌入式技术的快速发展,对高效、便携的多媒体设备的需求日益增长。作者首先深入剖析了ARM体系结构,特别是针对ARM9微处理器的特性,探讨了如何构建适用于嵌入式系统的嵌入式Linux操作系统。这个过程包括设置交叉编译环境,优化引导装载程序,成功移植了嵌入式Linux内核,并创建了适合S3C2410开发板的根文件系统。 在考虑到嵌入式系统硬件资源有限的特点,通常的PC机图形用户界面(GUI)无法直接应用。因此,作者选择了轻量级的Minigui作为研究对象,对其实体架构进行了研究,并将其移植到S3C2410开发板上,实现了嵌入式图形用户界面,使得系统具有简洁而易用的操作界面,提升了用户体验。 文章的核心部分是将通用媒体播放器Mplayer移植到S3C2410开发板上。针对嵌入式环境中的音频输出问题,作者针对性地解决了Mplayer播放音频时可能出现的不稳定性,实现了音乐和视频的无缝播放,打造了一个完整的嵌入式多媒体播放解决方案。 论文最后部分对整个项目进行了总结,强调了在嵌入式ARM-Linux平台上设计播放器所取得的成果,同时也指出了一些待改进和完善的方面,如系统性能优化、兼容性提升以及可能的扩展功能等。关键词包括嵌入式ARM-Linux、S3C2410芯片、Mplayer多媒体播放器、图形用户界面(GUI)以及Minigui等,这些都反映出本文研究的重点和领域。 通过这篇论文,读者不仅能了解到嵌入式系统与Linux平台结合的具体实践,还能学到如何在资源受限的环境中设计和优化多媒体播放器,为嵌入式技术在多媒体应用领域的进一步发展提供了有价值的经验和参考。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

Python字符串为空判断的动手实践:通过示例掌握技巧

![Python字符串为空判断的动手实践:通过示例掌握技巧](https://img-blog.csdnimg.cn/72f88d4fc1164d6c8b9c29d8ab5ed75c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASGFyYm9yIExhdQ==,size_20,color_FFFFFF,t_70,g_se,x_16) # 1. Python字符串为空判断的基础理论 字符串为空判断是Python编程中一项基本且重要的任务。它涉及检查字符串是否为空(不包含任何字符),这在
recommend-type

box-sizing: border-box;作用是?

`box-sizing: border-box;` 是 CSS 中的一个样式属性,它改变了元素的盒模型行为。默认情况下,浏览器会计算元素内容区域(content)、内边距(padding)和边框(border)的总尺寸,也就是所谓的"标准盒模型"。而当设置为 `box-sizing: border-box;` 后,元素的总宽度和高度会包括内容、内边距和边框的总空间,这样就使得开发者更容易控制元素的实际布局大小。 具体来说,这意味着: 1. 内容区域的宽度和高度不会因为添加内边距或边框而自动扩展。 2. 边框和内边距会从元素的总尺寸中减去,而不是从内容区域开始计算。
recommend-type

经典:大学答辩通过_基于ARM微处理器的嵌入式指纹识别系统设计.pdf

本文主要探讨的是"经典:大学答辩通过_基于ARM微处理器的嵌入式指纹识别系统设计.pdf",该研究专注于嵌入式指纹识别技术在实际应用中的设计和实现。嵌入式指纹识别系统因其独特的优势——无需外部设备支持,便能独立完成指纹识别任务,正逐渐成为现代安全领域的重要组成部分。 在技术背景部分,文章指出指纹的独特性(图案、断点和交叉点的独一无二性)使其在生物特征认证中具有很高的可靠性。指纹识别技术发展迅速,不仅应用于小型设备如手机或门禁系统,也扩展到大型数据库系统,如连接个人电脑的桌面应用。然而,桌面应用受限于必须连接到计算机的条件,嵌入式系统的出现则提供了更为灵活和便捷的解决方案。 为了实现嵌入式指纹识别,研究者首先构建了一个专门的开发平台。硬件方面,详细讨论了电源电路、复位电路以及JTAG调试接口电路的设计和实现,这些都是确保系统稳定运行的基础。在软件层面,重点研究了如何在ARM芯片上移植嵌入式操作系统uC/OS-II,这是一种实时操作系统,能够有效地处理指纹识别系统的实时任务。此外,还涉及到了嵌入式TCP/IP协议栈的开发,这是实现系统间通信的关键,使得系统能够将采集的指纹数据传输到远程服务器进行比对。 关键词包括:指纹识别、嵌入式系统、实时操作系统uC/OS-II、TCP/IP协议栈。这些关键词表明了论文的核心内容和研究焦点,即围绕着如何在嵌入式环境中高效、准确地实现指纹识别功能,以及与外部网络的无缝连接。 这篇论文不仅深入解析了嵌入式指纹识别系统的硬件架构和软件策略,而且还展示了如何通过结合嵌入式技术和先进操作系统来提升系统的性能和安全性,为未来嵌入式指纹识别技术的实际应用提供了有价值的研究成果。