嗨,有人可以帮我弄清楚我的愚蠢错误在哪里。 我试图在互联网上找到但无法找到最佳解决方案。我有一个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();
答案 0 :(得分:1)
*
之后应该没有delete
,它只是delete from
。
答案 1 :(得分:1)
将您的查询更改为
sql = "DELETE from message where id =?";
或以其他方式使用statement
查询
sql = "DELETE from message where id ="+id;
Statement st = conn.createStatement();
stmt.executeQuery(sql);
Reference使用Statement
进行删除查询答案 2 :(得分:0)
有几点需要注意:
st = conn.createStatement();
不需要。因为您已经在使用PreparedStatement。 sql = "DELETE * from message where id =?";
这可以写成:
sql = "DELETE from message where id =?";
//无需*
conn.commit();
时才需要 conn.setAutoCommit(false);
醇>
您必须提供错误/ Stacktrace才能获得有用的答案。