2015-11-20 113 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()。