2014-09-23 85 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