java - 有效登录后如何通过jsp代码更新或更改sql server中的数据?处理更新数据时发生异常

标签 java sql sql-server database jsp

我的所有代码都是用jsp编写的。我正在使用 eclipse、tomcat 服务器和 sql server management studio。使用注册的用户名和密码登录后。我正在尝试更改或更新联系电话和电子邮件 ID,但失败了。 我正在分享我的 success.jsp 代码(关于成功登录后并要求更新联系人和电子邮件字段)和 update2.jsp 代码(关于将数据更新到我登录的同一帐户的功能。

1.success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="update2.jsp">
<center>

  <h2>


<%
String a=session.getAttribute("username").toString();
out.println("Hello " +a);

%>


            <center>
            <table border="1" width="30%" cellpadding="5">
                <thead>
                    <tr>
                        <th colspan="2">Update Information Here</th>
                    </tr>
                </thead>
                <tbody>

                    <tr>
                        <td>Contact</td>
                        <td><input type="text" name="contact" value="" /></td>

                    </tr>

                    <tr>
                        <td>Email</td>
                        <td><input type="text" name="email" value="" /></td>
                    </tr>
                     <tr>
                        <td><input type="submit" name="submit" value="Update" /></td>
                        <td><input type="reset" value="Reset" /></td>
                    </tr>
                </tbody>
            </table>
            </center>

               </h2>
<a href='logout.jsp'>Log out</a>
</center>

  </form>>

The date now is: <%= new java.util.Date() %>

</body>
</html>

2. update2.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
      <%@page import="java.sql.Connection"%>
      <%@page import="java.sql.*" %>
    <%@page import="java.sql.*,java.io.*,java.text.*,java.util.*" %> 
<%@page import="java.util.*" %> 
<%@ page import= " java.sql.DriverManager"  %>
<%@page import= "java.sql.SQLException" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>



<%
String user = request.getParameter("uname");    
String pwd = request.getParameter("pass");
String fname = request.getParameter("fname");
String lname = request.getParameter("lname");
String email = request.getParameter("email");
String job= request.getParameter("job");
String place= request.getParameter("place");
String contact= request.getParameter("contact");

if(request.getParameter("submit") !=null)
{
Connection con = null;
PreparedStatement ps = null;

//String user1 = Integer.parseInt(uname);
try
{
    //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    Connection con1 = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;integratedSecurity=true;");
String sql="Update members2 set uname=?,pass=?,fname=?,lname=?,email=?, job=?,place=?,contact=? where uname=?,pass=?";
//String sqlEDIT="UPDATE members2(email,contact) VALUES(?,?)"
ps = con.prepareStatement(sql);
ps.setString(1,user);
ps.setString(2,pwd);
ps.setString(3, fname);
ps.setString(4, lname);
ps.setString(5, email);
ps.setString(6, job);
ps.setString(7, place);
ps.setString(8, contact);
int i = ps.executeUpdate();
if(i > 0)
{
out.print("Record Updated Successfully");
}
else
{
out.print("There is a problem in updating Record.");
}
}
catch(SQLException sql)
{
request.setAttribute("error", sql);
out.println(sql);
}
}



%> 
</body>
</html>

错误如下:

**HTTP Status 500** - An exception occurred processing JSP page /update2.jsp at line 42

type Exception report

message An exception occurred processing JSP page /update2.jsp at line 42

description The server encountered an internal error that prevented it from fulfilling this request.

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

    39:     Connection con1 = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;integratedSecurity=true;");
    40: String sql="Update members2 set uname=?,pass=?,fname=?,lname=?,email=?, job=?,place=?,contact=? where uname=?,pass=?";
    41: //String sqlEDIT="UPDATE members2(email,contact) VALUES(?,?)"
    42: ps = con.prepareStatement(sql);
    43: ps.setString(1,user);
    44: ps.setString(2,pwd);
    45: ps.setString(3, fname);


    Stacktrace:
        org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:575)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



    root cause 
    java.lang.NullPointerException
        org.apache.jsp.update2_jsp._jspService(update2_jsp.java:131)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

最佳答案

您的 sql 字符串有 10 个参数:

String sql="Update members2 set uname=?,pass=?,fname=?,lname=?,email=?, job=?,place=?,contact=? where uname=?,pass=?";

但是你设置了八个。

关于java - 有效登录后如何通过jsp代码更新或更改sql server中的数据?处理更新数据时发生异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51726047/

相关文章:

java - 无法打开 neo4j DB

sql - 查找大写字符然后添加空格

mysql - 日期之间的查询也返回前几个月的行

SQL 日期时间格式仅限日期

c++ - 如何使用 ADO 和 C++ 将 null 传递给存储过程输入参数

Java:如何将 3 个线性数组连接到一个 3 列的 CSV 文件中

java - javax.annotations.Nonnull 上的 TypeNotPresentException

java - Java 中使用堆栈的汉诺塔

SQL 按数字排序 - 1,2,3,4 等而不是 1,10,11,12

c# - 如何在 EF-Code-First 中指定主键名称