首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jsp从数据库中删除选定的数据?

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

Stack Overflow用户
提问于 2015-07-23 18:18:49
回答 2查看 5.2K关注 0票数 0

jdbcData.jsp --这显示了带有操作链接reg的表reg的整行和列的结果。当单击删除链接时,我希望只删除数据行。我该怎么办?

注意:第二个脚本名为jdbcDelete.jsp。

jdbcData.jsp

代码语言:javascript
复制
 <% 
     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

代码语言:javascript
复制
<% 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");
%>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-24 05:46:36

您的代码不能工作的原因有很多。

  1. 在jdbcDelete.jsp中不存在连接对象,因此需要首先建立连接。 <% Class.forName("com.mysql.jdbc.Driver");Connection con =Class.forName "root“、"root");语句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。

执行给定的SQL语句,该语句返回单个ResultSet对象。

在这里,您需要使用executeUpdate,它用于执行像INSERT, UPDATE AND DELETE这样的DML命令,并返回int。

代码语言:javascript
复制
int i = st.executeUpdate("delete from student where studentid="+dlt);

最后,您的jdbcDelete.jsp看起来是:

代码语言:javascript
复制
<%@ 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");
    }
%>

建议:在中使用java代码而不是使用servlets,也使用preparedstatement,但随着时间的推移,您将学习。

希望这能帮上忙。

票数 2
EN

Stack Overflow用户

发布于 2015-07-24 05:36:49

你可以这样重写你的代码,

代码语言:javascript
复制
<% Integer dlt =(Integer)request.getAttribute("id1");
ResultSet rs=null;
Statement st=null;

PreparedStatement ps=con.prepareStatement("delete from reg where id=?")
ps.setInt(1,dlt);
ps.executeUpdate();

response.sendRedirect("jdbcData.jsp");
%>

注意:-对于数据库操作,您可以编写服务或DAO,并请通过MVC体系结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31595191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档