【发布时间】:2013-05-13 17:03:13
【问题描述】:
我意识到这是论坛中相当普遍的问题,但我不知道我在这里做错了什么。
我有一个类似的“当前”表:
ID(uniqueidentifier)
Name(nvarchar max)
FileName(nvarchar max)
FileVersion(smallint)
CurrentVersionDate(datetime)
CurrentVersionDate 是使用 SQLserver 中的 GETDATE() 函数输入的。
当用户在我的网站上点击“创建文件”时,该表的详细信息将传输到“历史”表中。因此,我使用存储过程从“当前”中选择 * 详细信息并将每个值保存为变量(我在 Visual Studio 项目中使用 vb.net)。我将显示日期变量,因为这是问题所在。我将其保存为“日期”变量:
Dim dDate as Date
dDate = dr("CurrentVersionDate")
然后我将这些变量发送到另一个存储过程以进入“历史”表:
Execute sp_InsertHistory '" & ID & "','" & strName& "','" & strFile & "','" & intVersion & "','" & dDate & "'"
我在存储过程中声明日期变量为:
@Date datetime,
使用插入语句:
INSERT INTO History
(ID, Name, FileName, FileVersion, VersionDate)
VALUES
(@ID, @Name, @FileName, @FileVersion, @Date)
“历史”表与“当前”表的设置相同。单步执行代码,发现了这个错误:
Error converting data type varchar to datetime
变量肯定不是 varchar 吗?即使是这样,该字符串肯定是 SQLserver 的正确格式,因为我只是选择 SQL 给出的日期值! 有什么想法吗?
【问题讨论】:
-
不要将变量连接成字符串,将它们设置为命令参数值。见stackoverflow.com/questions/13014044/…
标签: sql vb.net visual-studio-2010 sql-server-2008-r2