我正在 JSP 中创建一个注册表单,我已经编写了代码,当将其部署到服务器上时,没有错误,没有输出,并且数据没有插入到数据库中。任何人都可以解决我的问题吗? 使用什么服务器:Tomcat 8,IDE:Eclipse Luna,数据库:Oracle 12c。
index.jsp
<html>
<head>
<title>Registration Form</title>
</head>
<body>
<form action="process.jsp" method="post">
<input type="text" name="uname" value="Name..." onclick="this.value" /><br>
<input type="text" name="uemail" value="Email..." onclick="this.value" /><br>
<input type="password" name="upass" value="Password..."
onclick="this.value" /><br> <input type="submit"
value="Register">
</form>
</body>
</html>
流程.jsp
<%@ page import="registration.RegisterDao"%>
<jsp:useBean id="obj" class="registration.User"></jsp:useBean>
<jsp:setProperty property="*" name="obj" />
<html>
<head>
</head>
<body>
<%
int status = RegisterDao.register(obj);
if (status > 0)
out.print("You are successfully registered");
%>
</body>
</html>
用户.java
package registration;
public class User {
private String uname;
private String upass;
private String uemail;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
public String getUemail() {
return uemail;
}
public void setUemail(String uemail) {
this.uemail = uemail;
}
}
provider.java
package registration;
public interface Provider {
String DRIVER = "oracle.jdbc.driver.OracleDriver";
String CONNECTION_URL = "jdbc:oracle:thin:@localhost:1521:oracle12c";
String USERNAME = "AtulRai";
String PASSWORD = "atulrai";
}
connectionProvider.java
package registration;
import java.sql.Connection;
import java.sql.DriverManager;
import static registration.Provider.*;
public class ConnectionProvider {
private static Connection con = null;
static {
try {
Class.forName(DRIVER);
con = DriverManager.getConnection(CONNECTION_URL, USERNAME,
PASSWORD);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static Connection getCon() {
return con;
}
}
注册dao.java
package registration;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class RegisterDao {
public static int register(User u) {
int status = 0;
try {
Connection con = ConnectionProvider.getCon();
PreparedStatement ps = con
.prepareStatement("insert into detail values(?,?,?)");
ps.setString(1, u.getUname());
ps.setString(2, u.getUemail());
ps.setString(3, u.getUpass());
} catch (Exception ex) {
ex.printStackTrace();
}
return status;
}
}
其他详细信息是:我的表名称是 DETAIL,列名称是 NAME、EMAIL、PASS。
最佳答案
您在 DAO 类内的 register() 中缺少executeUpdate() 语句:
该方法执行此PreparedStatement对象中的SQL语句,该语句必须是SQL数据操作语言(DML)语句,例如INSERT、UPDATE或DELETE;或不返回任何内容的 SQL 语句,例如 DDL 语句。 http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#executeUpdate()
public static int register(User u) {
int status = 0;
try {
Connection con = ConnectionProvider.getCon();
PreparedStatement ps = con
.prepareStatement("insert into detail values(?,?,?)");
ps.setString(1, u.getUname());
ps.setString(2, u.getUemail());
ps.setString(3, u.getUpass());
status = ps.executeUpdate();
} catch (Exception ex) {
ex.printStackTrace();
}
return status;
}
关于java - 没有错误,没有输出,数据没有插入到jsp的数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32683116/