2015-11-20 116 views
1
try { 
     //  con = dbConn.mySqlConnection(); 
      con = DatabaseConnection.getRAWConnection(); 
String insertSqlTable = "insert into certification VALUES(?,?,?,?,?,?,CURRENT_TIMESTAMP,?)"; 
      pst = con.prepareStatement(insertSqlTable); 
      pst.setInt(1, td.getEmpId()); 
     pst.setString(2, td.getRname()); 
     pst.setString(3, td.getStream()); 
     pst.setString(4, td.getCertificationType()); 
     pst.setString(5, td.getCertificationName()); 
     pst.setString(6, td.getCertificationDate()); 
     //pst.setTimestamp(7, timestamp); 
     pst.setInt(7, td.getScore()); 

     int count = pst.executeUpdate(); 
     if (count >= 1) { 
      con.commit(); 
      status = true; 
     } else { 
      System.out.println("Error occured while inserting certification details into database"); 
      con.rollback(); 
      status = false; 
     } 

我得到以下异常:微软SQL错误异常

com.microsoft.sqlserver.jdbc.SQLServerException:操作数类型冲突: INT与DATETIME2

+0

可能是你表中没有时间戳的第7列,向我们展示表结构 – SpringLearner

回答

2

而不是不兼容这

pst.setInt(7, td.getScore()); 

使用

pst.setInt(8, td.getScore()); 

7th说法已经存在的CURRENT_TIMESTAMP。您的insterested设置8th之一。

UPDATE

试试这个

try { 
     // con = dbConn.mySqlConnection(); 
      con = DatabaseConnection.getRAWConnection(); 
String insertSqlTable = "insert into certification VALUES(?,?,?,?,?,?,?,?)"; 
     pst = con.prepareStatement(insertSqlTable); 
     pst.setInt(1, td.getEmpId()); 
     pst.setString(2, td.getRname()); 
     pst.setString(3, td.getStream()); 
     pst.setString(4, td.getCertificationType()); 
     pst.setString(5, td.getCertificationName()); 
     pst.setString(6, td.getCertificationDate()); 
     java.sql.Timestamp date = new java.sql.Timestamp(new java.util.Date().getTime()); 
     pst.setTimestamp(7, date); 
     pst.setInt(8, td.getScore()); 

     int count = pst.executeUpdate(); 
     if (count >= 1) { 
      con.commit(); 
      status = true; 
     } else { 
      System.out.println("Error occured while inserting certification details into database"); 
      con.rollback(); 
      status = false; 
     } 

} 
+0

但是我仍然收到错误。它指出索引8超出范围 –

+0

OP正在做正确的方法,你的答案会抛出错误因为应该只有7个参数 – SpringLearner

0

可能是可变的分数为datetime型这就是为什么它给这个异常的,只是尽量使用时刻设定()压延类的,而不是SETINT()。