Asp.net 插入访问数据库(循环)

Asp.net 插入访问数据库(循环),asp.net,sql,Asp.net,Sql,我有这段代码,它出现了一个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)

我有这段代码,它出现了一个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

我认为你没有把日期写在磅符号里是错误的。当使用变量而不是参数时,必须在Jet(Access)中执行此操作

值(“#”&DateTime.Now.Date&“#”

我还冒昧地为您重构了这段代码,因为您正在为每条记录创建一个新的连接,这是个坏消息。使用Try-Catch-Finally块并将所有这些内容移到for循环之外(请参见下文)

函数记录顺序()
objDT=会话(“购物车”)
整数计数器
Dim con2作为新的System.Data.OleDb.OleDb连接
将myPath2设置为字符串
myPath2=Server.MapPath(“faraxday.mdb”)

con2.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”“我认为您没有将日期包含在磅符号中是一个错误。当使用变量而不是参数时,您必须在Jet(Access)中执行此操作

值(“#”&DateTime.Now.Date&“#”

我还冒昧地为您重构了这段代码,因为您正在为每条记录创建一个新的连接,这是个坏消息。使用Try-Catch-Finally块并将所有这些内容移到for循环之外(请参见下文)

函数记录顺序()
objDT=会话(“购物车”)
整数计数器
Dim con2作为新的System.Data.OleDb.OleDb连接
将myPath2设置为字符串
myPath2=Server.MapPath(“faraxday.mdb”)

con2.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;”我已通过删除单引号将其整理出来。感谢所有参与此操作的人。

我已通过删除单引号将其整理出来。感谢所有参与此操作的人。

INSERT INTO语句中的语法错误。说明:在执行当前web请求期间发生未经处理的异常。请查看stack trace以获取有关错误及其源代码的详细信息。异常详细信息:System.Data.OleDb.OLEDBEException:INSERT INTO STATEMEN中的语法错误您应该在循环外部打开和关闭连接。INSERT INTO语句中的语法错误。说明:在执行当前操作期间发生未经处理的异常web请求。请查看堆栈跟踪,以了解有关错误及其源代码的详细信息。异常详细信息:System.Data.OleDb.OLEDBEException:INSERT INTO STATEMEN中的语法错误您应该在循环外部打开和关闭连接。值仍然未存储在数据库中。我不确定这是什么问题em可能是。查询字符串是正确的…表上的主键是什么?如果在Catch块中放置断点,是否会弹出任何异常?它们是什么?有主键,但它是自动递增的,所以我将其留空。它不会显示任何错误,但不会插入db.System.Data.OleDb.oledbe异常:INSERT INT中的语法错误O System.Data.OleDb.OleDbCommand.ExecuteCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,Object&ExecuteSult)at System.Data.OleDb.OleDbCommand.ExecuteCommand(Object&ExecuteSult)at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior,Object&executeResult)位于System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(commandBehavia如果所有内容都有有效值,请将命令从ExecuteQuery更改为executeOnQuery()。如果不起作用,请尝试将CommandType设置为CommandType.Text。如果所有这些仍然不起作用,请找到一种方法来获取insert语句的字符串副本并将其放置。值仍然没有存储在数据库中。我不确定这可能是什么问题。查询字符串是正确的…表上的主键是什么?I如果在Catch块中放置断点,是否会弹出任何异常?它们是什么?有一个主键,但它会自动递增,因此我将其留空。它不会显示任何错误,但不会插入db.System.Data.OleDb.oledbe异常:INSERT INTO语句中的语法错误。在System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling中在System.Data.OleDb.OleDbCommand.ExecuteCommand.ExecuteCommand(tagDBPARAMS dbParams,Object&ExecuteSult)的System.Data.OleDb.OleDbCommand.ExecuteCommand(Object&ExecuteSult)的System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior,Object&ExecuteSult)在System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(commandBehavasSum)中,如果您拥有所有内容的有效值,请将命令从ExecuteQuery更改为ExecuteOnQuery()。如果这不起作用,请尝试将CommandType设置为CommandType.Text。如果这一切仍然不起作用,请找到一种方法,精确获取insert语句的字符串副本并将其放置。
    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