【发布时间】:2015-09-23 00:27:18
【问题描述】:
请帮我解决同样的问题:我不知道如何通过 mysql 中自动生成的 id 从表中删除数据,我认为这个问题可以在 JBDC 中使用 GENERATED_KEY 解决,总而言之我不知道,帮我了解如何按表 id 删除。
表格'注释':
CREATE TABLE `note` (
`id` MEDIUMINT NOT NULL AUTO_INCREMENT,
`noteName` VARCHAR(100) NOT NULL ,
`note` VARCHAR(1000) NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我现在得到的值是 - 'noteName' 但这是不正确的,我需要为表中的每一行获取 id
Statement st = con.createStatement();
ResultSet rs;
ResultSet resultSet;
rs = st.executeQuery("SELECT * FROM note");
while (rs.next()) {
%>
<tr>
<td><input type="checkbox"></td>
<td id="noteName"><%=rs.getString(1) %></td>
<td><%=rs.getString(2) %></td>
<td>time</td>
<td id="close">
<a href=deleteData?id=<%=rs.getString(1) %>><button onclick="deleteRow()" type="button" class="close" data-dismiss="modal">×</button></a>
</td>
</tr>
<% }
rs.close();
st.close();
con.close();
%>
我在这里删除数据:
public class deleteData extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int value = Integer.parseInt(request.getParameter("id"));
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/evernoteDB",
"evernoteDB", "0633739768z");
String query = "DELETE FROM note WHERE noteName = ?";
PreparedStatement statement = conn.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
statement.setInt(1, value);
statement.executeUpdate();
response.sendRedirect("/userNotes.jsp");
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
你不应该修改(更不用说删除)来自 HTTP
GET的数据;为此,您应该使用POST(即doPost)。 -
把payload放到一边是怎么回事?是不是不知道id是什么?
-
所以你不知道如何获取列
0而不是1?
标签: java mysql jsp web-applications