簡體   English   中英

更新查詢在Java中無法正常工作

[英]Update query not working properly in java

這是用於將新用戶添加到表的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服務器版本對應的手冊以獲取正確的語法,以在第1行的“登錄表(登錄ID,用戶名,密碼)附近使用VALUES('abc@xyz.com','asdfghjkl','asdfg'

使用此行而不是您的行:

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

永遠記住,只要表中有auto_increment字段,插入表時就必須指定列名

檢查您的setString()方法, 以獲取登錄ID和數字,應將其設置為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 );

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM