2013-03-25 63 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)必须调用。