jdbcData.jsp --这显示了带有操作链接reg的表reg的整行和列的结果。当单击删除链接时,我希望只删除数据行。我该怎么办?
注意:第二个脚本名为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");
%>发布于 2015-07-24 05:46:36
您的代码不能工作的原因有很多。
request.getAttribute("id1");获取ID,并且没有在页面jdbcData.jsp中设置任何属性,因此您将得到null。您需要使用request.getParameter("id1");,request.getParameter("id1");总是返回String,因此需要将String解析为int。做那件事
int dlt = Integer.parseInt(request.getParameter("id1"));executeQuery,它返回ResultSet。执行给定的SQL语句,该语句返回单个ResultSet对象。
在这里,您需要使用executeUpdate,它用于执行像INSERT, UPDATE AND DELETE这样的DML命令,并返回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");
}
%>建议:在中使用java代码而不是使用servlets,也使用preparedstatement,但随着时间的推移,您将学习。
希望这能帮上忙。
发布于 2015-07-24 05:36:49
你可以这样重写你的代码,
<% 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体系结构。
https://stackoverflow.com/questions/31595191
复制相似问题