为何JSP向MySQL数据库插入记录全显示NULL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为何JSP向MySQL数据库插入记录全显示NULL相关的知识,希望对你有一定的参考价值。

源代码如下,TOMCAT运行页面后,数据库中增加了一条记录,但是所有字段下的值都是NULL,求教为什么,怎么解决?是不是String sPrice=request.getParameter("Price");这几句中获得的值全是空值,求教高手怎么解决,谢谢~~<%@ page contentType="text/html; charset=gb2312" language="java"%><%@ page import="java.sql.*"%> 欢迎光临网上商城 <% String sCodeName=request.getParameter("CodeName"); String sPrice=request.getParameter("Price"); String sIntro=request.getParameter("Intro"); //将文章信息保存到数据库中 Code.setCodeName(sCodeName); Code.setPrice(sPrice); Code.setIntro(sIntro); if(Code.add()) out.println("商品信息发布成功"); out.println(""); else out.println("商品信息发布失败,请重试"); out.println(""); return; %>

参考技术A 是插入的行在输据库里看不到,还是插入行的数据在输据库里显示为null?
如果是前者,那就看一下你连接db的用户。mysql的root用户是默认自动提交的;如果是其他用户,就自己在代码里用transacton执行commit。
后者就自己查数据吧。

将用户记录插入MYSQL表

我正在尝试为用户注册新帐户创建一个注册页面。我正在使用带注册表单的signup.jsp页面然后连接到RegisterServlet.java(获取表单参数并在连接到DBConnection.java后将参数插入数据库)DBConnection包含连接到mysql数据库的try {}。

我尝试了多种注册用户的方法,但用户信息从未插入数据库。

signup.jsp:

<form action="RegisterServlet" method="post" onsubmit="return validate()">
                                        <div class="row">
                                            <div class="col-lg-6 col-md-6">
                                                <input type="text" placeholder="First Name" name="fname" class="form-control" />
                                            </div>
                                            <div class="col-lg-6 col-md-6">
                                                <input type="text" placeholder="Last Name" name="lname" class="form-control" />
                                            </div>
                                        </div>
                                        <div>
                                            <input type="text" placeholder="User Name" name="username" class="form-control" />
                                        </div>
                                        <div class="row">
                                            <div class="col-lg-6 col-md-6">
                                                <input type="password" placeholder="Password" name="password" class="form-control" id="pass" name="pass" />
                                            </div>
                                            <div class="col-lg-6 col-md-6">
                                                <input type="password" placeholder="Retype Password" name="confirm_password" class="form-control" id="pass2" name="pass2" />
                                            </div>
                                            <div class="col-lg-6 col-md-6">
                                                <%=(request.getAttribute("errMessage") == null) ? ""
                                                : request.getAttribute("errMessage")%>
                                            </div>
                                        </div>
                                        <div class="pull-left"><button type="submit" class="btn btn-primary">Sign Up</button></div>
                                     </form>

register Servlet.Java:

@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public RegisterServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.sendRedirect("login.jsp");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     try
        {
        String fname = request.getParameter("fname");
        String lname = request.getParameter("lname");
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        DBConnection db = new DBConnection();
        Connection con = db.getCon();


            Statement stmt = con.createStatement();
            stmt.executeUpdate("insert into user (fname, lname, username, password)values('"+fname+"','"+lname+"','"+username+"','"+password+"')");
            System.out.println("data inserted sucessfully");
            response.sendRedirect("login.jsp");
        } catch (SQLException e)
        {
            e.printStackTrace();
        }       


    }

}

dB connection.Java


public class DBConnection {

    public Connection con;

    public Connection getCon(){
        try {
        Class.forName("com.mysql.jdbc.Driver");
        con =  DriverManager.getConnection("jdbc:mysql://localhost:3306/cultureexchange", "root", "");
        } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
        return con;
        }
}

Sql用户表:

fname    lname    username    password
varchar  varchar  varchar     varchar

我的login.jsp工作,所以连接到数据库必须工作,提前感谢帮助。

答案

尝试更改这些行

 Statement stmt = con.createStatement();
            stmt.executeUpdate("insert into user (fname, lname, username, password)values('"+fname+"','"+lname+"','"+username+"','"+password+"')");

 PreparedStatement stmt = con.prepareStatement("insert into user (fname, lname, username, password)values(?,?,?,?)");
            ps.setString(1, fname);
            ps.setString(2, lname);
            ps.setString(3, username);
            ps.setString(4, password);
            ps.executeUpdate();

并确保在WEB-INF下的lib文件夹中有mysql-j-connector。

以上是关于为何JSP向MySQL数据库插入记录全显示NULL的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中,向MYSQL插入多条数据,如何判断如果某记录已经存在就不插入

jsp向SqlServer插入日期型数据

springboot中jsp用ajax传json数据传不到后台,结果显示全为null

将用户记录插入MYSQL表

如何在mysql中显示中文???

mysql进阶