Java JSP中的删除不起作用(表不存在)
我有一个简单的JSP,它对我的简单数据库的表进行选择,并显示结果:Java JSP中的删除不起作用(表不存在),java,postgresql,jsp,Java,Postgresql,Jsp,我有一个简单的JSP,它对我的简单数据库的表进行选择,并显示结果: <%-- <%@page import="javax.swing.JOptionPane"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.DriverManager"%> <%@page i
<%--
<%@page import="javax.swing.JOptionPane"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page contentType="text/html" pageEncoding="UTF-8"
import="model.User"%>
<%! public void deleteUser(int id) {
Connection c1 = null;
PreparedStatement ps = null;
try {
Class.forName("org.postgresql.Driver");
c1 = DriverManager
.getConnection("jdbc:postgresql://localhost:5432/postgres",
"postgres", "admin");
c1.setAutoCommit(false);
System.out.println("Opened database successfully" + "\n");
System.out.println("PROVA PROVA PROVA" + "\n");
ps = c1.prepareStatement("DELETE FROM users WHERE user_id = ? ");
ps.setInt(1, id);
ResultSet rs1 = ps.executeQuery();
rs1.close();
ps.close();
c1.close();
JOptionPane.showInputDialog("Player Deleted");
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
}
%>
<!DOCTYPE html>
<head>
<link rel="stylesheet" type="text/css" href="layout.css">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Registered users</title>
<input Type="BUTTON" Value="Home Page" onclick="location.href = 'index.html'">
</head>
<body>
<h1>Registered users</h1>
<p>
<%
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager
.getConnection("jdbc:postgresql://localhost:5432/firstapp",
"postgres", "admin");
c.setAutoCommit(false);
System.out.println("Opened database successfully" + "\n");
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users;");
while (rs.next()) {
int id = rs.getInt("user_id");
String firstname = rs.getString("firstname");
String lastname = rs.getString("lastname");
String country = rs.getString("country");
User u = (User) request.getAttribute("user"); %>
First Name: <% out.print(firstname); %> <br/>
Last Name: <% out.print(lastname); %> <br/>
Country: <% out.print(country); %> <br/>
<input Type="BUTTON" Value="Delete" onclick=<%deleteUser(id);%>>
<p/>
<%
}
rs.close();
stmt.close();
c.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}%>
</p>
</body>
您已将自动提交设置为false
c.setAutoCommit(false)代码>
因此,我认为您需要在执行delete语句之后提交事务
c.commit()代码>您已将自动提交设置为false
c.setAutoCommit(false)代码>
因此,我认为您需要在执行delete语句之后提交事务
c.commit()代码>
应该是
ps.executeUpdate();
移除
JOptionPane.showInputDialog("Player Deleted");
您可以在那里填充一个字符串变量以在HTML中显示。
(JOptionPane是swing,桌面应用程序的GUI。)
也
应该是
ps.executeUpdate();
移除
JOptionPane.showInputDialog("Player Deleted");
您可以在那里填充一个字符串变量以在HTML中显示。
(JOptionPane是swing,桌面应用程序的GUI。)
另外,您的代码中几乎没有问题:
deleteUser
中的连接字符串与JSP的主要部分中的连接字符串不同。这就是为什么找不到Users
表的原因
Java
在服务器上执行代码;在浏览器接收页面之前。因此,您无法按预期在onClick
上调用Java代码。在代码中,一旦显示记录,实际上就是在删除记录
正如其他人提到的JOptionPane.showInputDialog(“播放器已删除”)代码>将不起作用,因为它是对Swing对象的调用,该对象在桌面GUI中使用
不要将SQL放在JSP(或Java scriplets)中。(请注意,我了解您目前正在学习,您需要逐步进步,因此这是可以接受的)
正如Joop提到的,使用ps.executeUpdate()代码>用于删除
正如joop也提到的,删除代码中几乎没有问题:
deleteUser
中的连接字符串与JSP的主要部分中的连接字符串不同。这就是为什么找不到Users
表的原因
Java
在服务器上执行代码;在浏览器接收页面之前。因此,您无法按预期在onClick
上调用Java代码。在代码中,一旦显示记录,实际上就是在删除记录
正如其他人提到的JOptionPane.showInputDialog(“播放器已删除”)代码>将不起作用,因为它是对Swing对象的调用,该对象在桌面GUI中使用
不要将SQL放在JSP(或Java scriplets)中。(请注意,我了解您目前正在学习,您需要逐步进步,因此这是可以接受的)
正如Joop提到的,使用ps.executeUpdate()代码>用于删除
正如joop也提到的,删除不相关的,但是:永远不要将SQL直接放入JSP。绝对,永远不要把对Swing类的调用放入JSPFurtermore,你不能从客户端做JSP。不相关的,但是:永远不要把SQL直接放入JSP。绝对,永远不要在jspfurtermore中调用Swing类。你不能从客户端做JSP。是的,我正在学习,所以请容忍我糟糕的代码。我想重新设计应用程序,类似于您建议的,使用JSP查看数据,servlet来执行sql操作。也许你可以建议一个好的参考来了解它是如何为新手做的?Thanks@NoobNe0别担心,我们都需要在某个时候学习。我会在答案中添加一些链接。是的,我正在学习,所以请忍受我糟糕的代码。我想按照您的建议重新设计应用程序,使用JSP查看数据,使用servlet执行sql操作。也许你可以建议一个好的参考来了解它是如何为新手做的?Thanks@NoobNe0别担心,我们都需要在某个时候学习。我将在答案中添加一些链接。