-1

嗨,有人可以帮我弄清楚我的愚蠢错误在哪里。我正在尝试在互联网上查找,但找不到最佳解决方案。我有一个 jsp 和 java 控制器,我应该能够从数据库中删除一条记录,以下是我的代码。任何帮助都会得到承认

public void doDel(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, InstantiationException, IllegalAccessException{

        try {
                HttpSession session = request.getSession(true);
                messageBean mbean = new messageBean();
               int id = mbean.getMesId();
               String sql;
               sql = "DELETE * from message where id =?";
               Class.forName(driver).newInstance();
                conn = DriverManager.getConnection(url);
                st = conn.createStatement();
                ps = conn.prepareStatement(sql);
                ps.setInt(1, id);
                ps.executeUpdate();
                conn.commit();
                conn.close();
4

3 回答 3

1

应该没有*delete,只是delete from

于 2013-10-07T12:55:26.533 回答
1

将您的查询更改为

sql = "DELETE from message where id =?";

或者以其他方式使用statement查询作为

sql = "DELETE from message where id ="+id;
Statement st = conn.createStatement();
stmt.executeQuery(sql);

使用语句删除查询的参考

于 2013-10-07T12:56:10.810 回答
0

有几点需要注意:

  1. st = conn.createStatement();不需要。因为您已经在使用 PreparedStatement。

  2. sql = "DELETE * from message where id =?";这可以写成:

    sql = "DELETE from message where id =?";//不需要*

  3. conn.commit();仅当您正在设置时才需要conn.setAutoCommit(false);

您必须提供错误/堆栈跟踪才能获得有用的答案。

于 2013-10-07T12:57:24.903 回答