2017-07-15 64 views
0

這是一個用於向表中添加新用戶的servlet。更新查詢在java中無法正常工作

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> 

裏有table.The 7列第一種是通過自動遞增和休息的ID在正常列,即姓名,性別,地址,出生日期,登錄ID,聯繫電話。

我在控制檯中收到以下錯誤: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL語法中有一個錯誤 ;在登錄表(登錄 ID,用戶名,密碼)旁邊查看與您的MySQL服務器 版本對應的手冊,以獲取正確的語法。VALUES('[email protected]','asdfghjkl','asdfg'at line 1

回答

0

使用該行,而不是你的:

的PreparedStatement updatequery =(PreparedStatement的)conn.prepareStatement(「INSERT INTO館員(姓名,性別,地址,DATE_OF_BIRTH,LOGIN_ID,contact_number)VALUES(,,??? ,?,?,?)「);

總是記得每當你有auto_increment在表中的字段,則必須同時插入到表

檢查你的了setString()方法,的登錄ID &號指定列名,應SETINT()

那麼接下來的事情就是日期。從jsp頁面,您將收到類型爲java.Util的日期,但在更新/插入數據庫時​​,它應該是java.sql.Date類型。使用

updatequery.setDate(4, sqlDate); 

感謝

+0

謝謝,但沒有工作

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(); } 

最後插入/更新到數據庫:那麼讓這種變化。 –

+0

@JatinBisht你可以告訴我你在創建圖書管理員表時所寫的查詢嗎..我的意思是你「創建表」查詢 – sForSujit

+0

我是在wamp服務器上做的,所以我沒有使用任何我用圖形創建的查詢。 –