【问题标题】:Update query not working properly in java更新查询在java中无法正常工作
【发布时间】:2017-07-15 07:12:32
【问题描述】:

这是一个用于向表中添加新用户的 servlet。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String firstname = request.getParameter("firstname");
    String lastname = request.getParameter("lastname");
    String dob = request.getParameter("dob");
    String gen = request.getParameter("gen");
    String mem_type = request.getParameter("mem");
    String fname = request.getParameter("fname");
    String addr = request.getParameter("addr");
    long number = Long.parseLong(request.getParameter("c_no"));
    String loginID = request.getParameter("loginID");
    String username = request.getParameter("username");
    String password = request.getParameter("password");

    java.sql.Date sqlDate = null;
    SimpleDateFormat sdf = new SimpleDateFormat("dd-mm-yyyy");
    try {
        Date dobb = sdf.parse(dob);
        sqlDate = new java.sql.Date(dobb.getDate());
    }
    catch(ParseException e) {
        e.printStackTrace();
    }

    String name = firstname+" "+lastname;

    Connection conn = null;

    PrintWriter out = response.getWriter();

    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost/library", "root", "asdfghjkl");

        PreparedStatement updatequery = (PreparedStatement)conn.prepareStatement("INSERT INTO librarian(Librarian Name,Gender,Address,Date Of Birth,Login ID,Contact Number) VALUES (?,?,?,?,?,?)");

        updatequery.setString(1, name);
        updatequery.setString(2, gen);
        updatequery.setString(3, addr);
        updatequery.setDate(4, sqlDate);
        updatequery.setString(5, loginID);
        updatequery.setLong(6, number);

        int i = updatequery.executeUpdate();

        out.println(i+"Inserted.");

        conn.close();

    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

我试图在表中插入一个新行并使用了上面的代码,但它不起作用。请帮我找出程序中的错误。

JSP代码如下:

<html>
<head>
<style>
#d1{
position:relative;
bottom:0    

}

</style>

</head>

<jsp:include page="header.html"/>

<body>
<div>
<form class="page" method="post" action="RegisterPage">

First Name : <input name="firstname">

<br><br>

Last Name : <input name="lastname">

<br><br>

Date of Birth : <input name="dob" type="date">

<br><br>

Gender : 
<input type="radio" name="gen" value="Male">Male 
<input type="radio" name="gen" value="Female">Female 

<br><br>

Membership Type :
<input type="radio" name="mem" value="Librarian">Librarian
<input type="radio" name="mem" value="Member">Member

<br><br>

Father's Name : <input name="fname">

<br><br>    

Address <input name="addr">

<br><br>

Contact Number : <input name="c_no" type="text">

<br><br>

Email ID : <input name="loginID" type="email">

<br><br>

Username : <input name="username">

<br><br>

Password : <input name="password" type="password">

<br><br>

<input type="submit" value="Register">

</form>
</div>
</body>
<div id="d1">
<jsp:include page="footer.html"/>
</div>
</html>

表中有7列。第一列是一个自增的id,其余是普通列,即姓名、性别、地址、出生日期、登录ID、联系号码。

我在控制台中收到以下错误: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个错误 在您的 SQL 语法中;检查与您的 MySQL 服务器相对应的手册 'login table(Login) 附近使用正确语法的版本 ID,用户名,密码) VALUES ('abc@xyz.com','asdfghjkl','asdfg' at line 1

【问题讨论】:

    标签: java jquery html css jsp


    【解决方案1】:

    用这一行代替你的:

    PreparedStatement updatequery = (PreparedStatement) conn.prepareStatement("INSERT INTO Librarian(Name,gender,address,Date_of_birth,login_ID,contact_number) VALUES (?,?,?,?,?,?)");

    永远记住当您的表中有 auto_increment 字段时,您必须在插入表时指定列名

    检查你的 setString() 方法,loginID 和号码,应该是 setInt()

    接下来就是日期。从 jsp 页面,您将收到 java.Util 类型的日期,但在更新/插入数据库时​​,它应该是 java.sql.Date 类型。所以做出这个改变:

    String dateOfBirth = request.getParameter("dob");  // string format
            java.sql.Date sqlDate = null;
            SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
            try {
                Date dobb = sdf.parse(dateOfBirth);   // parsing into Date format
                sqlDate = new java.sql.Date(dobb.getDate());  // parsing java.Util.Date into java.sql.Date format
            } catch (ParseException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
    

    最后插入/更新到数据库使用

    updatequery.setDate(4, sqlDate );
    

    谢谢

    【讨论】:

    • @JatinBisht 你能告诉我你在创建图书馆员表时写的查询吗..我的意思是你“创建表”查询
    • 我是在 wamp 服务器上完成的,所以我没有使用任何查询,而是以图形方式创建它。
    • 好的,我会在我的机器上试试这个,给我一些时间
    • @JatinBisht 它在我这边工作正常。你有什么例外吗?
    • 没有例外,所以我无法指出错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    相关资源
    最近更新 更多