我正在使用sql server 2005和jdbc。尝试使用以下代码将值插入表ContentModification中

  java.sql.Date date= new java.sql.Date(Calendar.getInstance().getTimeInMillis());
  sql = "insert into ContentModification values(?,?)";
         pc.setString(1, space);
         pc.setDate(2, date); // line 3
     pc.executeUpdate();//line 4


在第3行,我收到错误com.jnetdirect.jsql.JSQLException:无效的参数索引:2有效范围是1到1
我没有得到这的原因是什么?

我的创建表脚本如下

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[ContentModification](
[XWC_NAME] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[XWC_LASTUPDATE] [datetime] NOT NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

最佳答案

使用JSQLConnect(5.95)试用许可证,jdk 1.6和SQL Express 2008,您的代码将成功执行。当您在数字“?”之间未匹配时,通常会发生此异常。 PreparedStatement中的标记和setDate()/ setString()的索引

您可以尝试更改此行:

 sql = "insert into ContentModification(XWC_NAME, XWC_LASTUPDATE) values(?,?)";

10-01 17:25