Вставить в Access DB (цикл) - PullRequest
       5

Вставить в Access DB (цикл)

2 голосов
/ 09 апреля 2011

У меня есть этот код, и он выдает ошибку оператора INSERT INTO ...

Наверное, это что-то, но я уже давно ... пожалуйста, помогите.

'Add items to db'
Function recordOrder()

    objDT = Session("Cart")

    Dim intCounter As Integer


    For intCounter = 0 To objDT.Rows.Count - 1

        objDR = objDT.Rows(intCounter)

        Dim con2 As New System.Data.OleDb.OleDbConnection

        Dim myPath2 As String
        myPath2 = Server.MapPath("faraxday.mdb")

        con2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data source=" & myPath2 & ";"
        Dim myCommand2 As New System.Data.OleDb.OleDbCommand

        myCommand2.CommandText = "INSERT INTO order(order_date, coupon_id, customer_id, quantity) values('" & System.DateTime.Now & "','" & Int32.Parse(objDR("ID")) & "','" & Int32.Parse(custID) & "','" & Int32.Parse(objDR("quantity")) &"')"
        myCommand2.Connection = con2
        con2.Open()
        myCommand2.ExecuteReader()
        con2.Close()




        test.Text += "Order ID: " & objDR("ID") & "Order Date: " & System.DateTime.Now & ", Cust ID: " & custID & ", Quantity: " & objDR("quantity") &" "

    Next


End Function

Ответы [ 2 ]

0 голосов
/ 11 апреля 2011

Я разобрался, удалив одинарные кавычки.Спасибо всем за участие.

0 голосов
/ 09 апреля 2011

Я думаю, что вы получаете ошибку, не заключая дату в знаки фунта.Вы должны сделать это в Jet (Access), когда используете переменные, а не параметры.

VALUES ('# "& DateTime.Now.Date &" #', ...

Я также взялсвобода рефакторинга этого кода для вас, поскольку вы создаете новое соединение для каждой записи, что является плохой новостью. Используйте блок Try Catch finally и переместите все эти вещи за пределы цикла For (см. ниже)

    Function recordOrder()

    objDT = Session("Cart")
    Dim intCounter As Integer
    Dim con2 As New System.Data.OleDb.OleDbConnection
    Dim myPath2 As String
    myPath2 = Server.MapPath("faraxday.mdb")
    con2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" <-- etc
    Dim myCommand2 As New System.Data.OleDb.OleDbCommand
    myCommand2.Connection = con2
    con2.Open()
    Try
        For intCounter = 0 To obDT.Rows.Count - 1
            objDR = objDT.Rows(intCounter)
            myCommand2.CommandText = "INSERT INTO order(order_date,coupon_id,customer_id,quantity)" _
                & "VALUES ('#" & System.DateTime.Now.Date & "#','" & Int32.Parse(objDR("ID")) & "','" & Int32.Parse(custID) _
                & "','" & Int32.Parse(objDR("quantity")) & "')"
            myCommand2.ExecuteReader()
        Next
    Catch ex As Exception
        'handle errors here
    Finally
        If con2.State = ConnectionState.Open Then
            con2.Close()
        End If
    End Try
End Function

Не забудьте пометить ответ, если это поможет.

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