Обновление DateTime в броски sql db - PullRequest
0 голосов
/ 31 мая 2011

Я пытаюсь обновить объект DateTime в поле datetime базы данных sql (SQL Server 2000).

У меня есть следующая функция

Public Sub Update(ByVal lastlogin as DateTime)

Using slqupdate as SqlCommand = _connection.CreateCommand()
  sqlupdate.CommandType = CommandType.Text
  sqlupdate.CommandText = "UPDATE myTable SET LastLogin = @lastlogin WHERE ID = 2"

  updatelastlogin = sqlupdate.CreateParameter()
  updatelastlogin.ParameterName = "@lastlogin"
  updatelastlogin.DbType = SqlDbType.DateTime
  updatelastlogin.Value = lastlogin
  slqlupdate.Parameters.Add(updatelastlogin)

  sqlupdate.ExecuteNonQuery()    
End Using
End Sub

Попытка вызвать его какследует Update (DateTime.Now) создает следующее исключение:

Не удалось преобразовать значение параметра из DateTime в десятичное.

Я не уверен, что ясделано неправильно, кто-нибудь знает?

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

Попробуйте SQLDBType вместо DBType

0 голосов
/ 31 мая 2011

Я нашел это на Microsoft MSDN:

Private Sub UpdateDemographics(ByVal customerID As Integer, _
    ByVal demoXml As String, _
    ByVal connectionString As String)

    ' Update the demographics for a store, which is stored 
    ' in an xml column.
    Dim commandText As String = _
     "UPDATE Sales.Store SET Demographics = @demographics " _
     & "WHERE CustomerID = @ID;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(commandText, connection)

        ' Add CustomerID parameter for WHERE clause.
        command.Parameters.Add("@ID", SqlDbType.Int)
        command.Parameters("@ID").Value = customerID

        ' Use AddWithValue to assign Demographics.
        ' SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml)

        Try
            connection.Open()
            Dim rowsAffected As Integer = command.ExecuteNonQuery()
            Console.WriteLine("RowsAffected: {0}", rowsAffected)

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Using
End Sub

Часть "command.Parameters.Add (" @ ID ", SqlDbType.Int)" должна указывать, что это параметр datetime?

...