问题在于,当我点击deletedata-out.println(value)
中的userNotes.jsp测试函数中的DELETE按钮时,它会起作用--它会向我显示在按钮上点击的内容的当前值,而不会显示其他内容。它不会从数据库中删除数据,也不会在响应时发送重定向,我需要做什么?
userNotes.jsp
<table id="notes" border="2">
<tr>
<td>note name</td>
<td>note</td>
</tr>
<%
PrintWriter writer = response.getWriter();
int id = Integer.parseInt(request.getParameter("r"));
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/evernoteDB",
"evernoteDB", "0633739768z");
Statement st = con.createStatement();
ResultSet rs;
rs = st.executeQuery("SELECT * FROM note");
while (rs.next())
{
%>
<tr>
<td><%=rs.getString(1) %></td>
<td><%=rs.getString(2) %></td>
<td>
<a href=deleteData?id=<%=rs.getString(1) %>> Delete </a>
</td>
</tr>
<%
}
rs.close();
st.close();
con.close();
}
catch(ClassNotFoundException e)
{
writer.println("Couldn't load database driver: " + e.getMessage());
}
catch(SQLException e)
{
writer.println("SQLException caught: " + e.getMessage());
}
catch (Exception e)
{
writer.println(e);
}
%>
</table>
deletedata-servlet
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.*;
import java.sql.*;
@WebServlet("/deleteData")
public class deleteData extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String value = request.getParameter("id");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/evernoteDB",
"evernoteDB", "0633739768z");
Statement st = conn.createStatement();
st.executeUpdate("DELETE FROM note WHERE noteName=" + value);
out.print(value);
response.sendRedirect("http://localhost:8080/userNotes.jsp");
conn.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
列Notename
的类型为string
,因此执行查询应该引用该值。
st.executeUpdate("DELETE FROM note WHERE noteName='" + value + "'");
请考虑使用PreparedStatement
。它很安全,也能处理此类错误。
既然您正在重定向,就不应该尝试设置任何内容标题。删除以下内容,因为servlet不应该写任何响应,而是要重定向。
response.setContentType("text/html");
PrintWriter out = response.getWriter();
另外,不要对主机和端口号进行硬编码,否则将无法在不同的服务器上部署生成的war。使用与sendredirect()
类似的相对URL
conn.close();
response.sendRedirect("/userNotes.jsp");
return;
我想从数据库中删除一条特定的记录。
这是我的职能。它获得产品的两个参数id和一个名称。使用MySQL命令删除数据库中的一行。我知道在我的代码中有缺失的行,我被卡住了,我不知道如何完成它。我还知道我的SQL行不正确。我不确定组合字符串“name”是否正确。
在这里,表的id是从删除按钮传递的。但我无法从数据库和表中删除该记录。代码如下:
这里是将从其中删除记录的index.jsp文件。 index.jsp
我正试图从数据库中删除一行,但得到以下错误
我制作了一个JTable,其中填充了数据库中的数据。它从textfields中获取数据并将其添加到表和数据库中。问题是我有一个删除按钮,我让它从表本身删除选定的行(使用defaultTableModel),但它不会从实际的数据库中删除该数据。当我再次运行该程序时,删除的行再次出现在JTable中。 这可能会变得混乱,但希望有人能找出我错过了什么。帮助将会很感激,但不要,我的时间很少,不能完全大修我