2014-09-23 62 views
1

enter image description here
插入日期,這是我的表格式錯誤而在MSSQL

ArrayList<String> dates = (ArrayList<String>)session.getAttribute("dates"); 

for(int i =0;i<7;i++) 
{ 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
    java.sql.Date d= new java.sql.Date(formatter.parse(dates.get(i)).getTime()); 

PreparedStatement pst1=mc.conn.prepareStatement("insert into dbo.timesheet_details  values(?,?,?)"); 


    pst1.setInt(1, newtmId); 
    pst1.setInt(2, 36); 
    pst1.setDate(3,d); 

    pst1.executeUpdate(); 
} 

這是我的數組列表中的日期。

dates = [2014-09-23, 2014-09-24, 2014-09-25, 2014-09-26, 2014-09-27, 2014-09-28, 2014-09-29] 

錯誤是...

com.microsoft.sqlserver.jdbc.SQLServerException:操作數類型衝突: 日期與文字不符

請幫助我如何轉換此數組列表使用正確的日期格式..

+0

什麼是'timesheet_details'的表定義?你可以添加到您的帖子嗎? – 2014-09-23 06:44:31

+0

從查看您的代碼,我並沒有發現會導致SQLServerException的錯誤。我注意到的是,你在循環的每次迭代中創建一個PreparedStatement,這是一個錯誤。準備好你的語句一次,並像你現在一樣在你的循環中使用PreparedStatement(通過調用'executeUpdate')。之後不要忘記清理你的聲明,關閉它。 – 2014-09-23 07:02:52

+0

您能否請您發佈異常的完整堆棧跟蹤? – 2014-09-23 07:03:12

回答

0

您可能必須指定您嘗試插入的所有列名稱。試試下面的INSERT語句,看看你是否還有問題

INSERT INTO dbo.timesheet_details(det_id,emp_id,period)VALUES(?,?,?); 
+0

對不起。不工作 – user3639244 2014-09-23 08:20:13

+0

您能儘可能多地發佈異常追蹤嗎?另外,其他列是否可用或者它們是否具有合適的默認值?非常少的信息可以使用。 – 2014-09-23 08:26:57

+0

其他字段不可爲空。我沒有得到任何其他人。只有日期的問題..這是我得到的唯一錯誤..... com.microsoft.sqlserver.jdbc.SQLServerException:操作數類型衝突:日期與文本不兼容 – user3639244 2014-09-23 08:34:30