mysql - 如何使用jsp从数据库中删除选定的数据?

标签 mysql jsp jdbc sql-delete

jdbcData.jsp 这显示了整行的结果 以及带有操作链接的表 reg 的列 删除。我只想删除那个 单击删除时数据行亮起 关联。我该怎么办?

注意:第二个 scriptlet 命名为 jdbcDelete.jsp。

jdbcData.jsp

 <% 
     Statement st =null;
     ResultSet rs =null;
     String s1 = request.getParameter("fn");
     Class.forName("com.mysql.jdbc.Driver");
     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/innoventa","root","root");

     st =con.createStatement();
     rs=st.executeQuery("select * from reg");
 %>
 <table border="1" align="center" cellpadding="10dx" summary="all posts" >

 <tr>
     <td><b>Id</b></td>
     <td><b>First Name</b></td>
     <td><b>Last Name</b></td>
     <td><b>Action</b></td>
 </tr>

 <% 
     while(rs.next()) {          
         int a = rs.getInt("id");
         String b =rs.getString("fname");
         String c=rs.getString("lname");
 %>
 <tr>
     <td><%out.println(a);%></td>
     <td><%out.println(b);%></td>
     <td><%out.println(c);%></td>
     <td><a href="jdbcDelete.jsp?id1=<%=a%>">Delete</a></td>
 </tr>
 <%
     }
 %>
 </table>
 <%
     st.close();
     con.close();
 %>

jdbcDelete.jsp

<% Integer dlt =(Integer)request.getAttribute("id1");
    ResultSet rs=null;
    Statement st=null;

    rs = st.executeQuery("delete from reg where id='"+dlt+"'");
    response.sendRedirect("jdbcData.jsp");
%>

最佳答案

导致您的代码无法运行的原因有很多。

  1. jdbcDelete.jsp中不存在连接对象,因此您需要先建立连接

    <% 
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/innoventa","root","root");
        Statement st = con.createStatement();
    %>
    
  2. 您正在使用 request.getAttribute("id1"); 获取 ID 并且您尚未在页面 jdbcData.jsp 中设置任何属性 所以你会得到null。您需要使用 request.getParameter("id1"); 相反,request.getParameter("id1"); 始终返回 String 所以您需要将String解析为int。要做到这一点

    int dlt = Integer.parseInt(request.getParameter("id1"));
    
  3. 您正在执行 executeQuery,它返回 ResultSet

Executes the given SQL statement, which returns a single ResultSet object.

这里您需要使用executeUpdate,它用于执行DML命令,例如INSERT、UPDATE AND DELETE,它返回int

int i = st.executeUpdate("delete from student where studentid="+dlt);

最后你的jdbcDelete.jsp看起来像:

<%@ page import="java.sql.*" %>
<% 
    int dlt = Integer.parseInt(request.getParameter("id1"));
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/innoventa","root","root");

    Statement st = con.createStatement();;  

    int i = st.executeUpdate("delete from student where studentid="+dlt);
    if (i != 0) {
        response.sendRedirect("jdbcData.jsp");
    } else {
        out.print("Data not deleted successfully");
    }
%>

建议:在 JSP 中使用 java 代码而不是使用 servlet 是不好的做法,也使用 preparedstatement 但随着时间的推移,你正在学习你将学习。

希望这会有所帮助。

关于mysql - 如何使用jsp从数据库中删除选定的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31595191/

相关文章:

java - 访问位于 WEB-INF 文件夹中的资源

javascript - Javascript 函数未定义 JSP 错误

html - 100% img div 根据页面

java - 具有 2 个不同数据库名称的 MySQL JDBC URL 故障转移

java - java, linux 中的 noclassdefounderror

MYSQL 查询 : Can you use IN with 2 different fields?

javascript - Laravel 插入 2 个表

mysql - 格式字符和字符串插值的 Django 原始 SQL 查询问题

mysql - 我想在我的 mysql 查询中自动添加单引号

java - 收到错误 SQLServerException : The result set is closed