【问题标题】:Error inserting data into SQL Server database将数据插入 SQL Server 数据库时出错
【发布时间】:2014-09-03 22:45:30
【问题描述】:

执行代码以将数据插入数据库时​​,我收到以下错误:

system.data.oledb.oledbexception (0X80040E14): 插入语法错误 进入声明

这是我的代码:

   Public Sub put_data(ByVal lstpart As List(Of String), lstpartid As List(Of String), lstmanufacturer As List(Of String), lstmanufacturerid As List(Of String), lstprice As List(Of String), lstpartdescription As List(Of String), ByVal lstpartimg As List(Of Image))
        Dim intCurrentRecord As Integer = 0
        Dim strSQL As String
        Dim ds As New DataSet
        ' Dim sqlcmd As OleDbCommand

        MsgBox(MyCn.State.ToString, vbOK, "test")

        Try

        Do While intCurrentRecord <= lstpart.Count - 1
                strSQL = "Insert into Parts (Part, [Part ID],Manufacturer,Prices,[Manufacturer ID],[Part Description] VALUES (?,?,?,?,?,?)"

            strSQL = strSQL.Replace(vbCrLf, " ")

            Using MyCn
                Using sqlcmd = New OleDbCommand(strSQL, MyCn)
                    sqlcmd.Parameters.AddWithValue("@p1", lstpart(intCurrentRecord))
                    sqlcmd.Parameters.AddWithValue("@p2", lstpartid(intCurrentRecord))
                    sqlcmd.Parameters.AddWithValue("@p3", lstmanufacturer(intCurrentRecord))
                    sqlcmd.Parameters.AddWithValue("@p4", lstprice(intCurrentRecord))
                    sqlcmd.Parameters.AddWithValue("@p5", lstmanufacturerid(intCurrentRecord))
                    sqlcmd.Parameters.AddWithValue("@p6", lstpartdescription(intCurrentRecord))
                        sqlcmd.ExecuteNonQuery()
                End Using
            End Using
            intCurrentRecord += 1

            Loop
        Catch ex As Exception
            MsgBox(ex.ToString, vbOK, "Error")
        End Try
        dbclose()

【问题讨论】:

  • 您在插入语句中有语法错误。您的列列表至少缺少)Using MyCn 是否意味着 MyCn 将在 End Using 处变为 Dispose?因为你似乎在重复使用MyCn (Do While ...)。
  • 您好像在列列表末尾缺少)
  • 是的,我遍历了一些包含将数据插入每一行的数据的列表。

标签: sql-server database vb.net ado.net


【解决方案1】:

您在字段列表中缺少右括号。这个:

Insert into Parts
(Part, [Part ID],Manufacturer,Prices,[Manufacturer ID],[Part Description]
VALUES
(?,?,?,?,?,?)

应该是这样的:

Insert into Parts
(Part, [Part ID],Manufacturer,Prices,[Manufacturer ID],[Part Description])
VALUES
(?,?,?,?,?,?)

【讨论】:

  • 好的,所以我在我的语法中发现了问题,但是当我去提取数据时,它会因为表没有数据而返回。不知道为什么会这样。将数据放入但没有数据输出时我没有收到错误。在放入数据结束时我需要做些什么,以确保文件与新数据一起保存?
  • 终于弄明白了,我使用了 sqlcmd.CommandText = strSQL sqlcmd.ExecuteNonQuery() dbTrans = MyCn.BeginTransaction() dbTrans.Begin() dbTrans.Commit() dbclose() 现在它可以工作了.
猜你喜欢
  • 2016-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 2015-06-26
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多