Как написать дату для доступа к БД из VB.net

У меня возникли проблемы с записью даты в базу данных. Я искал повсюду и видел много противоречивых стандартов.

В основном я продолжаю получать несоответствие типов. Я уверен, что это что-то простое, чего я не вижу.

мой код ниже. По сути, я делаю запрос, добавляю параметры и пытаюсь его запустить. Имя и номер телефона — это текст, «Заказанный продукт» должен быть числом (точнее, productID), а дата — это дата.

Почему я получаю несоответствие при выполнении команды?

        Dim sqlCMD
        sqlCMD = "" + _
                       "INSERT INTO Orders " + _
                       "    ([NAME], " + _
                       "    [PhoneNumber], " + _
                       "    [ProductOrdered], " + _
                       "    [OrderDate]) " + _
                       "VALUES      ('@CustomerName', " + _
                       "    '@PhoneNumber', " + _
                       "    '@ProductOrdered', " + _
                       "    '@OrderDate'); "

        Dim connection As OleDb.OleDbConnection = New OleDb.OleDbConnection()
        connection.ConnectionString = ConnectionStringConst

        Dim command As OleDb.OleDbCommand = New OleDb.OleDbCommand(sqlCMD, connection)
        command.Parameters.Add("@CustomerName", OleDb.OleDbType.Char).Value = txtOrderCustName.Text
        command.Parameters.Add("@PhoneNumber", OleDb.OleDbType.Char).Value = txtOrderPhoneNum.Text
        command.Parameters.Add("@ProductOrdered", OleDb.OleDbType.Integer).Value = cmbOrderItem.SelectedIndex
        command.Parameters.Add("@OrderDate", OleDb.OleDbType.DBDate).Value = DateTime.Now


        Try
            connection.Open()   
            command.ExecuteNonQuery()      'Perform our query and insert into the table 
        Catch ex As Exception
            MsgBox("ERROR - Your query may not have completed" + vbNewLine + vbNewLine + _
                   "Error Message: " + ex.Message)
        Finally
            connection.Close()  
        End Try

person PsychoData    schedule 11.03.2014    source источник
comment
Надеюсь это поможет. Это действительно расстраивает Попытка вставить DateTime.Now в поле Date/Time дает ошибку несоответствия типа данных   -  person Steve    schedule 11.03.2014
comment
@ Стив, я vb.net, а не C#   -  person PsychoData    schedule 11.03.2014


Ответы (1)


Причиной несоответствия вашего типа данных является наличие одинарных кавычек вокруг имен параметров. В основном вы передаете строку вместо числа или даты.

   sqlCMD = "" + _
                   "INSERT INTO Orders " + _
                   "    ([NAME], " + _
                   "    [PhoneNumber], " + _
                   "    [ProductOrdered], " + _
                   "    [OrderDate]) " + _
                   "VALUES      (@CustomerName, " + _
                   "    @PhoneNumber, " + _
                   "    @ProductOrdered, " + _
                   "    @OrderDate); "

Это может быть реальным источником несоответствия вашего типа.

person Steve    schedule 11.03.2014
comment
Вы пробовали без кавычек вокруг параметров? - person Steve; 11.03.2014
comment
Ну что ж, рад быть полезным, до новых встреч на SO - person Steve; 11.03.2014
comment
Бедный движок БД, вероятно, запутался, получая VALUES (''Jeremy', ... - person PsychoData; 11.03.2014