那就干脆不传参数了,改成这样试试
CREATE PROCEDURE [ShipInfo_insert]
(@ST [bit],
@OP [varchar](10))AS INSERT INTO [ZSData].[dbo].[ShipInfo]
([StateTag], [Operator])
VALUES ( getdate(),@ST,@OP)
GO
CREATE PROCEDURE [ShipInfo_insert]
(@ST [bit],
@OP [varchar](10))AS INSERT INTO [ZSData].[dbo].[ShipInfo]
([StateTag], [Operator])
VALUES ( getdate(),@ST,@OP)
GO
cmdInsert.Parameters.Add(New SqlParameter("@WD", SqlDbType.DateTime, 8))
cmdInsert.Parameters("@WD").Value = System.DateTime.Now
另外2个参数也是这么传的,没有问题:
cmdInsert.Parameters.Add(New SqlParameter("@ST", SqlDbType.DateTime, 8))
cmdInsert.Parameters("@ST").Value = "ABC"
AS INSERT INTO [ZSData].[dbo].[ShipInfo]
([WorkDate],
[StateTag],
[Operator])
select getdate(), @ST, @OP
传2个参数就可以啦
你的办法可行,但我想弄明白,为什么用参数传递日期就不行?别的数据都对呀,传递方法也一样。
cmdInsert.Parameters.Add(New SqlParameter("@ST", SqlDbType.DateTime, 8))
cmdInsert.Parameters.Add(New SqlParameter("@WD", SqlDbType.DateTime, 8))
cmdInsert.Parameters("@WD").Value = System.DateTime.Now
这个日期不一定是当天的,所以没法用getdate!一定要传送。
因为现在是测试,用了=System.DateTime.Now,实际上这个值来自页面的textbox的输入。
cmdInsert.Parameters("@WD").Value = System.DateTime.Now
看看你的时间格式,是不是8位,要是大于8位的话,你传入的时间可能回被截断
我已经说明白了,现在是测试,所以没有用页面输入的值,而是用了系统时间:System.DateTime.NowTO:aierong(皑婀瑢-数据库XML.NET联盟会处长)
表中WD是Datetime格式,系统默认8位;在存储过程中,@WD也是Datetime,8位;System.DateTime.Now产生的时间是:2003-9-30 12:00:10,传送时只传送了前8位--2003-9-3,后面的估计被截断了。但是,Datetime格式的长度不能自己定义啊。
不用存储过程,把SQL语句写在页面中,就没有问题,真怪。
愁死了
没有用的。直接用SQL语句我也是这么写的,日期在表中能正确存储。