public void deleteStudent(String name) { //实现删除学生的代码 SQL bd=new SQL(); Connection conn=bd.getConn(); try { nam = name; Statement stmt = conn.createStatement(); // 创建Statement对象 String sql = "delete from students where name=?;"; // 要执行的SQL // 使用占位符,避免SQL注入攻击 PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, nam); ps.executeUpdate(); stmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace();
时间: 2024-02-14 20:09:42 浏览: 20
这段代码实现了删除学生的功能,通过传入学生姓名name,然后在数据库中查找到相应的学生记录,使用SQL语句进行删除操作。
具体实现步骤如下:
1. 首先创建一个SQL对象,获取数据库连接。
2. 接着通过传入的学生姓名name,使用SQL语句查询到要删除的学生记录,这里使用了占位符的方式,避免SQL注入攻击。
3. 创建PreparedStatement对象,将占位符替换成实际参数。
4. 调用executeUpdate()方法,执行删除操作。
5. 最后关闭Statement对象和数据库连接。
需要注意的是,如果这段代码在一个GUI界面中,需要将其封装在一个事件监听器中,当用户点击删除按钮时,调用该方法实现删除操作。同时,为了避免意外删除操作,最好要求用户再次确认是否要删除该学生记录。
相关问题
public class StudentDao { private static Connection conn = null; public static void initConnection() throws Exception { // 连接MySQL Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/sys", "root", "1234"); } // 返回所有学生 public ArrayList<Student> getAllStudents() throws Exception { ArrayList<Student> al = new ArrayList<Student>(); initConnection(); String sql = "SELECT num,name FROM tb_student"; Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery(sql); while (rs.next()) { Student stu = new Student(); al.add(stu); } rs.close(); stat.close(); closeConnection(); return al; } // 添加学生信息到数据中 public int addStudent(Student student) throws Exception { initConnection(); //创建一个sql语句 String sql = "insert into tb_student(num,name) values (?, ?)"; //创建一个PreparedStatement 对象 PreparedStatement ps=conn.prepareStatement(sql); //填充参数 ps.setString(1,student.getNum()); ps.setString(2,student.getName()); //执行sql语句 int retv=ps.executeUpdate(); ps.close(); //关闭链接 conn.close(); return retv; } // 修改学生信息 public int updateStudent(Student student) throws Exception { //创建一个连接 initConnection(); //创建一个sql语句 String sql = ""; //创建一个PreparedStatement 对象 PreparedStatement ps=conn.prepareStatement(sql); //填充参数 //执行sql语句 int retv=ps.executeUpdate(); ps.close(); //关闭链接 closeConnection(); //返回影响的行数 return retv; } // 删除学生 public int delStudent(Student student) throws Exception { //创建一个连接 initConnection(); //创建一个sql语句 String sql = ""; //创建一个PreparedStatement 对象 PreparedStatement ps=conn.prepareStatement(sql); //填充参数 //执行sql语句 int retv=ps.executeUpdate(); ps.close(); //关闭链接 closeConnection(); //返回影响的行数 return retv; } public static void closeConnection() throws Exception { conn.close(); } }请把代码补充完整,并写出相应的增、删、改、查的.jsp代码
这里给出Student类的基本属性和方法:
public class Student {
private String num; // 学号
private String name; // 姓名
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
补充完整的StudentDao类如下:
import java.sql.*;
import java.util.ArrayList;
public class StudentDao {
private static Connection conn = null;
public static void initConnection() throws Exception {
// 连接MySQL
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/sys", "root", "1234");
}
// 返回所有学生
public ArrayList<Student> getAllStudents() throws Exception {
ArrayList<Student> al = new ArrayList<Student>();
initConnection();
String sql = "SELECT num,name FROM tb_student";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
while (rs.next()) {
Student stu = new Student();
stu.setNum(rs.getString("num"));
stu.setName(rs.getString("name"));
al.add(stu);
}
rs.close();
stat.close();
closeConnection();
return al;
}
// 添加学生信息到数据中
public int addStudent(Student student) throws Exception {
initConnection();
// 创建一个sql语句
String sql = "insert into tb_student(num,name) values (?, ?)";
// 创建一个PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 填充参数
ps.setString(1, student.getNum());
ps.setString(2, student.getName());
// 执行sql语句
int retv = ps.executeUpdate();
ps.close();
// 关闭链接
closeConnection();
return retv;
}
// 修改学生信息
public int updateStudent(Student student) throws Exception {
// 创建一个连接
initConnection();
// 创建一个sql语句
String sql = "update tb_student set name=? where num=?";
// 创建一个PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 填充参数
ps.setString(1, student.getName());
ps.setString(2, student.getNum());
// 执行sql语句
int retv = ps.executeUpdate();
ps.close();
// 关闭链接
closeConnection();
// 返回影响的行数
return retv;
}
// 删除学生
public int delStudent(Student student) throws Exception {
// 创建一个连接
initConnection();
// 创建一个sql语句
String sql = "delete from tb_student where num=?";
// 创建一个PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
// 填充参数
ps.setString(1, student.getNum());
// 执行sql语句
int retv = ps.executeUpdate();
ps.close();
// 关闭链接
closeConnection();
// 返回影响的行数
return retv;
}
public static void closeConnection() throws Exception {
conn.close();
}
}
增删改查的.jsp代码如下:
<!-- 添加学生 -->
<form action="addStudent.jsp" method="post">
学号:<input type="text" name="num"><br>
姓名:<input type="text" name="name"><br>
<input type="submit" value="添加">
</form>
<!-- 修改学生 -->
<form action="updateStudent.jsp" method="post">
学号:<input type="text" name="num"><br>
姓名:<input type="text" name="name"><br>
<input type="submit" value="修改">
</form>
<!-- 删除学生 -->
<form action="delStudent.jsp" method="post">
学号:<input type="text" name="num"><br>
<input type="submit" value="删除">
</form>
<!-- 查询学生 -->
<table border="1" cellpadding="5">
<tr>
<th>学号</th>
<th>姓名</th>
</tr>
<%
StudentDao dao = new StudentDao();
ArrayList<Student> list = dao.getAllStudents();
for (Student stu : list) {
%>
<tr>
<td><%=stu.getNum()%></td>
<td><%=stu.getName()%></td>
</tr>
<% } %>
</table>
完善这段代码import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class Update { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Connection conn = DB.getC
onnection(); //获取数据库连接对象 PreparedStatement pstmt = null; String sql = "UPDATE student SET name=?, age=? WHERE id=?"; try { pstmt = conn.prepareStatement(sql); //设置参数 pstmt.setString(1, "张三"); pstmt.setInt(2, 20); pstmt.setInt(3, 1); int count = pstmt.executeUpdate(); if(count > 0){ System.out.println("更新成功!"); }else{ System.out.println("更新失败!"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ DB.close(pstmt); //关闭 PreparedStatement 对象 DB.close(conn); //关闭连接对象 } } }
这是一个 Java 程序,用来更新数据库中的一条记录。在这个程序中,首先获取了一个数据库连接对象,然后使用 PreparedStatement 对象来执行 SQL 语句。在 SQL 语句中,使用了占位符来表示要更新的字段值,这些值会在后面的代码中动态设置。最后根据执行结果,输出更新成功或更新失败的信息。需要注意的是,在程序结束时,需要关闭 PreparedStatement 对象和连接对象,以释放资源。