正如主题所暗示的那样。我正在制作一个小程序,您可以在其中浏览和处理一堆数据。问题是虽然向 SQL 表中插入新行可以正常工作,但使用相同的方法进行更新会导致 smalldatetime 变量出现问题。
我注意到使用分析器 exec 命令在日期上加上双引号,但我似乎无法摆脱它。加上插入时会发生相同的双引号,并且效果很好。该过程中的命令如下所示:
执行 spUpdateinfo @id=默认值, @job=N'Loadsoftext', @address=N'Loadsoftext', @startdate=''2009-02-01 00:00:00:000'', @enddate=''2009-05-15 00:00:00:000'', @other=N'加载软文本'
我得到的是这个错误:
消息 102,第 15 级,状态 1,第 5 行 “2009”附近的语法不正确。
我正在做的是在 asp.net 代码隐藏中使用日期并将其作为参数作为普通日期传递,假设它在 SQL 过程中转换为 smalldatetime。使用的方法和变量以及字符串等可以与插入时完全相同,但由于某种原因,UPDATING 会导致问题。我在谷歌搜索时看到了一些 PreserveSingleQuotes() 函数,但在 vb 或 SQL Server 2005 中似乎不存在。
知道是什么原因造成的以及如何使更新正常工作吗?
编辑:哦,日期最初是芬兰语格式,即 dd.MM.yyyy。但如前所述,所有这些工作都很好,并且在使用 INSERT 时会自动转换。
编辑2:这是整个代码。
Asp.Net (vb)
将 fdate 变暗为日期 将日期变暗为日期 fdate = CDate(BegindateTextBox.Text.Trim) ldate = CDate(EnddateTextBox.Text.Trim) 将 ID 调暗为新 SqlParameter("@id", Request.QueryString("job_id")) 将作业作为新的 SqlParameter("@job", JobTextBox.Text) 将地址变暗为新 SqlParameter("@address", AddressTextBox.Text) Dim Begindate As New SqlParameter("@startdate", fdate) 将结束日期调暗为新的 SqlParameter("@enddate", ldate) 将 Otherinfo 作为新的 SqlParameter("@other", OtherinfoTextBox.Text) 开始日期.DbType = DbType.Date 结束日期.DbType = DbType.Date myCommand = 新 SqlCommand("spUpdateinfo") myCommand.CommandType = CommandType.StoredProcedure myCommand.Connection = conn myCommand.Parameters.Add(ID) myCommand.Parameters.Add(作业) myCommand.Parameters.Add(地址) myCommand.Parameters.Add(开始日期) myCommand.Parameters.Add(结束日期) myCommand.Parameters.Add(其他信息) myCommand.ExecuteNonQuery()
SQL 过程
更新作业信息 设置工作 = @Job, 地址=@地址, Begindate = CAST(@Begindate AS smalldatetime), 结束日期 = CAST(@Enddate AS smalldatetime), 其他信息 = @Otherinfo 哪里 Job_id = @id
花了一段时间,因为我不得不编辑敏感词。无论如何,谢谢帮助和任何想法发生了什么?你可以在那里看到演员表等,因为我试图摆弄我能修复的任何东西,但它仍然无法正常工作。
编辑3:感谢您的帮助,今天休息,所以明天我会继续看这个。