我正在使用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(?,?)";