当前位置: 首页 > 知识库问答 >
问题:

无法使用jsp插入数据库

王航
2023-03-14
<%@ page import="java.sql.*, javax.servlet.http.*" language="java"    
contentType="text/html; charset=windows-1256" pageEncoding="windows-1256" %>


<%!public static Connection connect ()
{
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
return DriverManager.getConnection("jdbc:mysql://localhost/test","root","dhawanbhai1");
} 


catch (Exception e)
{
//throw new Error(e);
return null;

}

}

public static boolean close(Connection c)
{
try
{
c.close();
return true;

}

catch (Exception e)
{
return false;
}
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org
/TR/html4/loose.dtd">
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>Login Page</title>
</head> 
<body> 
<form action=""> 
Please enter your username 
<input type="text" name="un"/>
<br> 
Please enter your password
<input type="password" name="pw"/> 
<input type="submit" value="submit"> 
</form> 
</body> 
</html> 
<%
Connection c = connect();



String user=request.getParameter("un");
String pass=request.getParameter("pw");
PreparedStatement pst=c.prepareStatement("insert into userpass (id,password) 
values (?,?)");
pst.setString(1, user);
pst.setString(2, pass);


int val=pst.executeUpdate();

if(val>0)
System.out.println("Inserted record");
%>

但是得到

org.apache.jasper.JasperException: An exception occurred processing JSP page 
/LoginPage.jsp at line 68

65: pst.setString(2, pass);
66: 
67: 
68: int val=pst.executeUpdate();
69: 
70: if(val>0)
71: System.out.println("Inserted record");


Stacktrace:

jspException(jspservletwrapper.java:568)org.apache.jasper.servlet.jspservletwrapper.java:455)org.apache.jasper.server.jspserver.servicejjspfile(jspservlet.java:390)org.apache.jasper.server.jspserver.service(jspservlet.java:334)javax.server.http.httpservlet.service(httpservlet.java:728)org.apache.tomcat.websocket.server.wsfilter.dofilter(

root cause 

javax.servlet.ServletException: 
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 
'id' cannot be null

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
org.apache.jsp.LoginPage_jsp._jspService(LoginPage_jsp.java:147)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

共有1个答案

阚通
2023-03-14

在堆栈跟踪中,它指出列'id'不能为null。所以问题可能是request.getParameter(“un”);为空。检查您传递的是'un'参数,并且您在两个地方都有正确的名称'un'。

将代码的底部改为如下所示:

<%
String user=request.getParameter("un");
String pass=request.getParameter("pw");    
if (user != null && pass != null) {
    Connection c = connect();
    PreparedStatement pst=c.prepareStatement("insert into userpass (id,password) values (?,?)");
    pst.setString(1, user);
    pst.setString(2, pass);

    int val=pst.executeUpdate();

    if(val>0)
        System.out.println("Inserted record");
}
%>

当您第一次加载页面时,'un'和'pw'不会被设置,所以它不应该调用insert方法。这将检查在尝试插入之前是否设置了参数。

 类似资料:
  • 我是mysql和php的初学者。在这个问题上陷入了困境。不知道问题出在哪里。但是如果我直接执行insert查询,它就会被执行,而如果我从用户那里接受它,它就不会被执行(代码中显示了这一点)。可能问题出在我用来检索用户提交的值的$\u POST[]方法上。我已经提交了两个代码,addbooks。php(用户提交值的表单)和add。php(插入数据库)。

  • 事情是这样的 我不知道发生了什么,如果有人能帮忙,我会非常感激的。THX!

  • 我的雪花实例上有一个数据库。数据库有两个模式和。 模式使用SQLAlchemy- 我有一个列的dataframe,如下所述,需要插入到上面创建的表中- 因此,为了插入数据帧,我使用了方法,如下所示- 数据帧。to_sql(table_name,self.engine,index=False,method=pd_writer,if_exists=“append”) 这会给我一个错误- 这个错误是因为

  • 我是laravel的新手,当我使用单击函数提交表单时出现了一些问题。ajax jquery controller不会将数据保存到数据库,每次响应时都会使用整个html文件。请帮帮我。 关于标题的一些信息 请求URL:http://akshay.laravel/patient1?fname=asdknkl 状态代码:200 OK 远程地址:[::1]:80 推荐人策略:降级时无推荐人 缓存控制:无缓

  • 在我的应用程序中,我从表类读取数据,并在表测试中插入id值。我通常在jsp中使用table和插入链接,但这次我需要通过选项标签和插入按钮显示我的数据插入按钮我有这个错误(抛出异常[java.lang.NumberFormatExc0019:对于输入字符串:""]与根本原因java.lang.NumberFormatExc0019:对于输入字符串:") 我在使用表和链接进行插入时没有问题,所以ser