주제가 제시합니다. 작은 데이터를 검색하고 처리 할 수있는 작은 프로그램을 만들고 있습니다. 문제는 SQL 테이블에 새로운 행을 삽입해도 문제가 없지만 동일한 메소드를 사용하여 smalldatetime 변수에 문제가 발생한다는 것입니다.ASP.NET을 SQL Server 2005로 업데이트하면 smalldatetime 프로 시저가 업데이트되지 않습니까?
나는 exec 명령이 날짜에 큰 따옴표를 넣는 것을 보았지만 제거 할 수없는 것으로 나타났습니다. 게다가 삽입 할 때 동일한 큰 따옴표가 사용됩니다.
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'
그리고 내가 무엇을 얻을 것은이 오류입니다 : 절차에서이 명령은 다음과 같습니다
Msg 102, Level 15, State 1, Line 5 Incorrect syntax near '2009'.
내가이 asp.net의 코드 숨김에서 날짜를 사용하여 통과하고있어 같은 그 SQL 프로 시저에서 smalldatetime으로 변환되었다고 가정 할 때 일반 날짜로 매개 변수. 사용 된 메소드 및 변수 및 문자열 등은 삽입 할 때와 정확히 동일 할 수 있지만 어떤 이유에서든 UPDATING이 문제를 유발합니다. 인터넷에있는 동안 PreserveSingleQuotes() 함수가 사용되는 것을 보아 왔지만 VB 또는 SQL Server 2005에는 존재하지 않는 것 같습니다.
업데이트가 정상적으로 작동하는 이유는 무엇입니까?
편집 : 아, 날짜는 원래 dd.MM.yyyy 인 핀란드 형식입니다. 그러나 말했듯이,이 모든 것은 잘 작동하며 INSERT를 사용하는 동안 자동으로 변환됩니다.
편집 2 : 다음은 전체 코드입니다. 나는 sensitives을 편집했다으로
Asp.Net (VB)
Dim fdate As Date Dim ldate As Date fdate = CDate(BegindateTextBox.Text.Trim) ldate = CDate(EnddateTextBox.Text.Trim) 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 Enddate.DbType = DbType.Date 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), Enddate = CAST(@Enddate AS smalldatetime), Otherinfo = @Otherinfo WHERE Job_id = @id
잠시했다. 어쨌든, 무슨 일이 일어나고 있는지에 대한 도움이나 아이디어가 있습니까? 내가 고칠 수있는대로 바이올린을 시도 했으므로 캐스트를 볼 수 있지만 여전히 작동하지 않습니다.
편집 3 : 편집 해 주셔서 감사합니다. 오늘은 내일 다시 보겠습니다.
00 : 00 : 00.000이 기본적으로 추가되어 시간 부분을 제거 할 수도 있습니다. – Scoregraphic
Scoregraphic : 맞습니다. 문제를 해결하기 위해 가능한 가장 작은 수의 변경을 시도했습니다. 나는 개인적으로 'dd/mm/yyyy'의 형태로 모든 내 데이트 시간을 설정하지만 각자 자신에게 각각 설정합니다. – TheTXI
질문 : "exec 명령을 사용하여 날짜에 큰 따옴표를 넣는 것으로 나타났습니다.하지만이를 제거 할 수 없습니다." 나는 원래 포스터가 여분의 큰 따옴표를 이미 알고 있다고 생각한다. 질문을 더 자세히 읽으면 왜 이것이 일어나는지 알고 싶어합니다. –