我使用下面的代码使用JSP插入表:
<%@ page import="java.sql.*" %>
<%@ page language="java" import="java.sql.*" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>conn</head>
<body>
<form action = "" method = "POST">
id : <input type = "text" name = "eid">
name: <input type="text" name="first_name">
<input type="submit" value="Submit" />
</form>
<%
String data1 = request.getParameter("eid");
String data = request.getParameter("first_name");
%>
<%
Connection conn = null;
Statement stmt = null;
ResultSet result = null;
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","Password");
PreparedStatement ps = null;
String query = "insert into employee(eid,ename) values(?,?)";
ps = conn.prepareStatement(query);
ps.setString(1,data1);
ps.setString(2,data);
ps.executeUpdate();
%>
</body>
</html>
我收到错误“ORA-01400:无法插入NULL(”SYSTEM“。”EMPLOYEE“。”EID“)”
我甚至在表单出现之前就收到此错误。 为什么在单击“提交”按钮之前发生插入。
感谢!!!!
答案 0 :(得分:2)
如果您只想使用JSP:
您可以将<% %>
之间的所有代码放在另一个将数据传递给它的jsp页面中
但这不是一个好习惯,建议使用servlet
从jsp
获取数据并将其传递给bean,同样在bean
中放置代码与之连接数据库...
答案 1 :(得分:1)
当页面加载时,每个块内的&lt; %%&gt;在服务器端执行,结果传递给页面。因此,你得到了上述行为。
你的积木&lt; %%&gt;与fom无关。
答案 2 :(得分:1)
如果您希望允许JSP发布到自身并处理请求,我可能会执行以下操作:
FormControl
请记住,使用JSP,所有工作都是在服务器端完成的,因此如果代码中存在逻辑错误,那么大多数工作都会在您的页面完全呈现之前发生。如果要对数据库进行查询,则应确保已发送必要的信息。您可以通过JSP页面的请求对象访问它来获取该信息。接下来,我在代码周围放置一个if语句,以确保填充这两个值。最后,我将您的代码放在try / catch / finally结构中,以确保数据库连接已关闭。这最后一点对你来说可能不是什么大不了的事(我把它当作某个类或者只是为了学习而做)但如果你长时间运行服务器并且你忘记关闭它可能会出现问题数据库连接。