Почему SQL Server выдает ошибку преобразования при отправке date.today в столбец datetime? - PullRequest
0 голосов
/ 18 марта 2010

Я получаю сообщение об ошибке преобразования каждый раз, когда пытаюсь отправить значение даты на сервер sql. Столбец в sql server - это datetime, а в vb я использую Date.today, чтобы перейти к параметризованному запросу Я продолжаю получать исключение sql

Ошибка преобразования при преобразовании даты и времени из строки символов.

Вот код

Public Sub ResetOrder(ByVal connectionString As String)
        Dim strSQL As String
        Dim cn As New SqlConnection(connectionString)
        cn.Open()
        strSQL = "DELETE Tasks WHERE ProjID = @ProjectID"
        Dim cmd As New SqlCommand(strSQL, cn)
        cmd.Parameters.AddWithValue("ProjectID", 5)
        cmd.ExecuteNonQuery()

        strSQL = "INSERT INTO Tasks (ProjID, DueDate, TaskName) VALUES " & _
        " (@ProjID, @TaskName, @DueDate)"
        Dim cmd2 As New SqlCommand(strSQL, cn)
        cmd2.CommandText = strSQL

        cmd2.Parameters.AddWithValue("ProjID", 5)
        cmd2.Parameters.AddWithValue("DueDate", Date.Today)
        cmd2.Parameters.AddWithValue("TaskName", "bob")
        cmd2.ExecuteNonQuery()
        cn.Close()
        DataGridView1.DataSource = ds.Projects
        DataGridView2.DataSource = ds.Tasks
    End Sub

Любые мысли будут с благодарностью.

Ответы [ 3 ]

3 голосов
/ 18 марта 2010

Попробуйте

DateTime.Now()

Или

DateTime.Today;

Вместо

Date.Today
1 голос
/ 18 марта 2010

Может быть проблема с различными региональными настройками между вашим приложением и сервером SQL.

Хотя это не решает основную проблему, прямой способ избежать этого - явное форматирование даты, которую вы передаете SQL

cmd2.Parameters.AddWithValue("DueDate", DateTime.Today.ToString("yyyyMMdd"));

EDIT: Я читаю ваш код более внимательно: ваши параметры и значения находятся в разных порядках. Попробуйте:

strSQL = "INSERT INTO Tasks (ProjID, DueDate, TaskName) VALUES " & _
" (@ProjID, @DueDate, @TaskName)"
0 голосов
/ 18 марта 2010

Параметры были в неправильном порядке. Doh!

@ TaskName и @DueDate поменялись местами. Я считаю, что все вышеприведенные предложения верны.

strSQL = "INSERT INTO Tasks (ProjID, DueDate, TaskName) VALUES " & _         " (@ProjID, @TaskName, @DueDate)"       
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...