2013-03-25 61 views
-1

這是我的編輯代碼...如何在jsp中使用mysql插入日期?

  java.sql.Timestamp sqlNow = new java.sql.Timestamp(new java.util.Date().getTime()); 

       stmt = con.createStatement(); 
    //stmt.executeUpdate("INSERT INTO cregn values('"+appno+"','"+usname+"','"+upwd +"','"+fname+"','"+mname+"','"+lname+"','"+dob+"','"+gend+"','"+faname+"','"+saddr+"','"+caddr+"','"+staddr +"','"+pin+"','"+cno+"','"+email+"','"+occ+"','"+secques+"','"+answer+"','Processing','"+sqlNow+"')"); 
       pst = con.prepareStatement("INSERT INTO cregn (aplno, username, pwd, firstname,middlename,lastname, dob,gender, fathername, street,city,state, pincode, phone, email,occupation,secques,answer,dor) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 

       pst.setInt(1, appno); 
       pst.setString(2, usname); 
       pst.setString(3, upwd); 
       pst.setString(4, fname); 
       pst.setString(5, mname); 
       pst.setString(6, lname); 
       pst.setString(7, dob); 
       pst.setString(8, gend); 
       pst.setString(9, faname); 
       pst.setString(10, saddr); 
       pst.setString(11, caddr); 
       pst.setString(12, staddr); 
       pst.setString(13, pin); 
       pst.setString(14, cno); 
       pst.setString(15, email); 
       pst.setString(16, occ); 
       // pst.setString(17,ph); 
       pst.setString(17, secques); 
       pst.setString(18, answer); 

       pst.setTimestamp(19, sqlNow); 

       pst.executeUpdate(); 

       out.println("Registration Successful for application " + appno); 
      } catch (Exception ee) { 
       out.println("Invalid Data! All fields are mandatory..." + ee.getMessage()); 
      } 


%> 

執行這個代碼後錯誤顯示爲「無效數據!所有字段是mandatory..data截斷」

+0

你是否執行了這個聲明,我的意思是,插入一個? – 2013-03-25 08:47:52

+0

是的,我正在使用預處理語句刪除插入語句。 – 2013-03-25 08:55:08

+0

是否將自動提交設置爲false,如果是,那麼您甚至需要提交事務? – 2013-03-25 08:57:10

回答

2

你必須呼籲pstexecuteexecuteUpdate在爲了實際完成這項工作。例如,在最後:

pst.executeUpdate(); 

所有你所顯示的代碼確實是準備語句執行,不執行它。這是PreparedStatementStatement之間的主要區別之一。在Statement中,您將SQL直接傳遞到executeUpdate(如在使用stmt的註釋行中看到的那樣)。使用PreparedStatement,您提供的SQL與?一樣,請設置這些參數,然後,然後調用executeUpdate(或execute),您還沒有完成。

+0

使用此語句後:pst.excuteUpdate(); ....並運行它正在顯示的代碼...「無效的數據所有字段是強制性的.....數據截斷:超出範圍值調整colmn」手機「在第1行」。 col phone的數據大小在數據庫中爲20 .... – 2013-03-25 09:15:04

+0

@TulsiHemrajani:好的,現在您正在執行該聲明! :-)截斷是一個完全不同的問題。這意味着你的'cno'變量有一個長度超過20個字符的值(因爲'phone'是你的INSERT中的第14個字符,'cno'是你用於參數#14的變量('pst .setString(14,cno);')。 – 2013-03-25 09:19:02

+0

是的,cno變量是20個字符長,而phone是INSERT中的第14個東西..我插入一個長度爲10個字符的電話號碼。同樣的錯誤顯示「無效的數據所有的字段是強制性的.....數據截斷:超出範圍值調整爲第1行colmn」電話「 – 2013-03-25 09:30:36

0

沒有executeUpdate()被呼叫pst

3

您沒有執行該聲明。

你需要調用的executeUpdate

0

使用pst.executeUpdate();執行查詢,並確保在交易中使用的setAutoCommit(true)必須調用。