【问题标题】:how to delete data from db using id - generated_key如何使用 id 从数据库中删除数据 - generated_key
【发布时间】: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">&times;</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


【解决方案1】:

您将能够从表中获取所有数据。

<tr>
    <td><%= rs.getInt("id") %></td> returns id
    <td><%= rs.getString("notename") %></td> returns noteName
    <td><%= rs.getString("note") %></td> returns note
</tr>

然后改变

<a href=deleteData?id=<%=rs.getString(1) %>>...</a>

<a href=deleteData?id=<%= rs.getInt("id") %>>...</a>

在 servlet 中将查询更改为

"DELETE FROM note WHERE id = ?"

【讨论】:

  • 这不是正确的答案,因为我没有列 id 当我尝试 rs.getInt(1) 时,此列是由 mysql 自动生成的 我有 SQL 异常:getInt() 的值无效 - '你好世界!'你看到它正在尝试从字符串列而不是从 id 获取值
  • 您能告诉我表格中自动生成的字段id 的值是多少吗?我认为它会像 1,2,3,4... 因为它是mediumint
  • 我不能,因为我不能获取(id)这个值,第 1 列 - 它是“noteName”
  • 你的意思是说你在表中没有ID列。
  • 你可以在这个问题的顶部看到我的桌子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2020-08-25
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多