Ошибка преобразования: SqlParameter и DateTime - PullRequest
1 голос
/ 14 июня 2010

Я изменяю старые уязвимые SqlCommands с помощью SqlParameters, но получаю SqlException:

System.Data.SqlClient.SqlException {"Преобразование не удалось при преобразовании даты и времени из строки символов."}

в sqlCommand.ExecuteScalar:

Dim sqlString As String = _
    "SELECT TOP 1 " & _
        "fiSL " & _
    "FROM " & _
        "tabData AS D " & _
    "WHERE " & _
        "D.SSN_Number = '@SSN_Number' " & _
    "AND D.fiProductType = 1 " & _
    "AND D.Repair_Completion_Date > '@Repair_Completion_Date' " & _
    "ORDER BY " & _
        "D.Repair_Completion_Date ASC"    

Dim obj As Object
Dim sqlCommand As SqlCommand
Try
    sqlCommand = New SqlCommand(sqlString, Common.MyDB.SqlConn_RM2)
    sqlCommand.CommandTimeout = 120
    sqlCommand.Parameters.AddWithValue("@SSN_Number", myClaim.SSNNumber)
    sqlCommand.Parameters.AddWithValue("@Repair_Completion_Date", myClaim.RepairCompletionDate)
    If Common.MyDB.SqlConn_RM2.State <> System.Data.ConnectionState.Open Then Common.MyDB.SqlConn_RM2.Open()
        obj = sqlCommand.ExecuteScalar()
Catch ex As Exception
    Dim debug As String = ex.ToString
Finally
    Common.MyDB.SqlConn_RM2.Close()
End Try

myClaim.RepairCompletionDate - это SQLDateTime.Нужно ли удалять кавычки в sqlString для сравнения столбцов даты?Но тогда я не получаю исключения, но неверные результаты.

1 Ответ

1 голос
/ 14 июня 2010

Да, цитаты должны быть удалены.Вы никогда не должны заключать в кавычки параметры в T-SQL - даже при использовании строк.Следовательно, вы должны удалить кавычки вокруг @SSN_Number и @Repair_Completion_Date.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...