This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center。
7年前关闭。
正如主题所暗示的。我正在制作一个小程序,您可以在其中浏览和处理大量数据。问题是,尽管在SQL表中插入新行的效果很好,但是使用相同的方法进行更新会导致smalldatetime变量出现问题。
我注意到使用事件探查器,exec命令在日期上加上双引号,但我似乎无法摆脱它。另外,插入时也会发生相同的双引号,并且效果很好。该过程中的命令如下所示:
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'Loadsoftext'
我得到的是这个错误:
Msg 102,第15级,状态1,第5行
'2009'附近的语法不正确。
我正在做的是在asp.net代码后面使用日期,并将其作为参数作为正常日期传递,假设它已在SQL过程中转换为smalldatetime。使用的方法,变量和字符串等可以与插入时完全相同,但是由于某种原因,UPDATING会引起问题。我已经看到一些谷歌搜索时使用了PreserveSingleQuotes()函数,但是在vb或SQL Server 2005中似乎并不存在。
知道是什么原因造成的,以及如何使更新正常工作?
编辑:哦,日期原来是芬兰格式,为dd.MM.yyyy。但是如上所述,所有这些工作都很好,并且在使用INSERT时会自动转换。
编辑2:这是整个代码。
Asp.Net(vb)
暗淡日期
暗淡日期
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作为新的SqlParameter(“@ startdate”,fdate)
将Dim结束日期另存为新的SqlParameter(“@ enddate”,ldate)
将OtherInfo设为新的SqlParameter(“@ other”,OtherinfoTextBox.Text)
Begindate.DbType = DbType.Date
Enddate.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(Otherinfo)
myCommand.ExecuteNonQuery()
SQL过程
更新jobInfo
SET Job = @工作,
地址= @地址,
Begindate = CAST(@Begindate AS smalldatetime),
结束日期= CAST(@Enddate AS smalldatetime),
Otherinfo = @Otherinfo
在哪里Job_id = @id
花了一段时间,因为我不得不将敏感内容删除。无论如何,寻求帮助和任何想法是怎么回事?您可以在其中看到演员表等,因为我尽力去修复它,但是仍然无法正常工作。
编辑3:感谢您的帮助,今天休息,所以明天我将继续研究。
创建日期时间字符串时只需要一个撇号
编辑:
Asp.Net(vb)
SQL过程
这很奇怪,因为您的工作与我经常做的非常相似,而且我没有遇到任何问题。我唯一可以建议的是删除我突出显示的部分,看看它是否有效。我建议这样做是因为在我通常使用的代码中,它们不是必需的。
7年前关闭。
正如主题所暗示的。我正在制作一个小程序,您可以在其中浏览和处理大量数据。问题是,尽管在SQL表中插入新行的效果很好,但是使用相同的方法进行更新会导致smalldatetime变量出现问题。
我注意到使用事件探查器,exec命令在日期上加上双引号,但我似乎无法摆脱它。另外,插入时也会发生相同的双引号,并且效果很好。该过程中的命令如下所示:
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'Loadsoftext'
我得到的是这个错误:
Msg 102,第15级,状态1,第5行
'2009'附近的语法不正确。
我正在做的是在asp.net代码后面使用日期,并将其作为参数作为正常日期传递,假设它已在SQL过程中转换为smalldatetime。使用的方法,变量和字符串等可以与插入时完全相同,但是由于某种原因,UPDATING会引起问题。我已经看到一些谷歌搜索时使用了PreserveSingleQuotes()函数,但是在vb或SQL Server 2005中似乎并不存在。
知道是什么原因造成的,以及如何使更新正常工作?
编辑:哦,日期原来是芬兰格式,为dd.MM.yyyy。但是如上所述,所有这些工作都很好,并且在使用INSERT时会自动转换。
编辑2:这是整个代码。
Asp.Net(vb)
暗淡日期
暗淡日期
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作为新的SqlParameter(“@ startdate”,fdate)
将Dim结束日期另存为新的SqlParameter(“@ enddate”,ldate)
将OtherInfo设为新的SqlParameter(“@ other”,OtherinfoTextBox.Text)
Begindate.DbType = DbType.Date
Enddate.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(Otherinfo)
myCommand.ExecuteNonQuery()
SQL过程
更新jobInfo
SET Job = @工作,
地址= @地址,
Begindate = CAST(@Begindate AS smalldatetime),
结束日期= CAST(@Enddate AS smalldatetime),
Otherinfo = @Otherinfo
在哪里Job_id = @id
花了一段时间,因为我不得不将敏感内容删除。无论如何,寻求帮助和任何想法是怎么回事?您可以在其中看到演员表等,因为我尽力去修复它,但是仍然无法正常工作。
编辑3:感谢您的帮助,今天休息,所以明天我将继续研究。
最佳答案
尝试这个:
exec spUpdateinfo
@id=default,
@job=N'Loadsoftext',
@address=N'Loadsoftext',
@startdate='2009-02-01 00:00:00:000',
@enddate='2009-05-15 00:00:00:000',
@other=N'Loadsoftext'
创建日期时间字符串时只需要一个撇号
编辑:
Asp.Net(vb)
Dim fdate As Date
Dim ldate As Date
fdate = CDate(BegindateTextBox.Text.Trim)
ldate = CDate(EnddateTextBox.Text.Trim)
//Trim might be screwing it up not sure
Dim ID As New SqlParameter("@id", Request.QueryString("job_id"))
Dim Job As New SqlParameter("@job", JobTextBox.Text)
Dim Address As New SqlParameter("@address", AddressTextBox.Text)
Dim Begindate As New SqlParameter("@startdate", fdate)
Dim Enddate As New SqlParameter("@enddate", ldate)
Dim Otherinfo As New SqlParameter("@other", OtherinfoTextBox.Text)
Begindate.DbType = DbType.Date // Try removing this
Enddate.DbType = DbType.Date // Try removing this
myCommand = New SqlCommand("spUpdateinfo")
myCommand.CommandType = CommandType.StoredProcedure
myCommand.Connection = conn
myCommand.Parameters.Add(ID)
myCommand.Parameters.Add(Job)
myCommand.Parameters.Add(Address)
myCommand.Parameters.Add(Begindate)
myCommand.Parameters.Add(Enddate)
myCommand.Parameters.Add(Otherinfo)
myCommand.ExecuteNonQuery()
SQL过程
UPDATE jobInfo
SET Job = @Job,
Address= @Address,
Begindate = CAST(@Begindate AS smalldatetime) //Try removing the cast,
Enddate = CAST(@Enddate AS smalldatetime) //Try removing the cast,
Otherinfo = @Otherinfo
WHERE Job_id = @id
这很奇怪,因为您的工作与我经常做的非常相似,而且我没有遇到任何问题。我唯一可以建议的是删除我突出显示的部分,看看它是否有效。我建议这样做是因为在我通常使用的代码中,它们不是必需的。
关于asp.net - 从ASP.NET到SQL Server 2005,UPDATE smalldatetime程序不起作用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/863405/
10-10 14:45