vba如何在SQL批量语法中插入动态参数

vba如何在SQL批量语法中插入动态参数,sql,sql-server,vb.net,Sql,Sql Server,Vb.net,我正在尝试使用vb opendialog打开一个随机csv文件,并将csv中的数据插入SQL Server 2014。当涉及到硬代码数据时,它看起来不错,但对于动态随机上传来说,它有问题。我被困在这里了,请帮帮我 这是我的动态测试代码,我已经创建了与csv文件的文件格式和列名匹配的数据库、表和列: Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Dim con As St

我正在尝试使用vb opendialog打开一个随机csv文件,并将csv中的数据插入SQL Server 2014。当涉及到硬代码数据时,它看起来不错,但对于动态随机上传来说,它有问题。我被困在这里了,请帮帮我

这是我的动态测试代码,我已经创建了与csv文件的文件格式和列名匹配的数据库、表和列:

 Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim con As String = "Server=KEN-PC;Database=testData;Trusted_Connection=True;"
    Dim myStream As Stream = Nothing
    Dim openFileDialog2 As New OpenFileDialog()

    openFileDialog2.InitialDirectory = "c:\Desktop"
    openFileDialog2.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
    openFileDialog2.FilterIndex = 2
    openFileDialog2.RestoreDirectory = True

    If openFileDialog2.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
        Try
            myStream = openFileDialog2.OpenFile()
            If (myStream IsNot Nothing) Then
                ' Insert code to read the stream here.
                TextBox2.Text = openFileDialog2.FileName
                Dim conString As String = OpenFileDialog1.FileName

                Try
                    Using connection As New SqlConnection(connetionString)
                        connection.ConnectionString = con
                        sql = "BULK INSERT cvtest
                        FROM" & "'constring'" & "With ( FIELDTERMINATOR = ',', 
                          ROWTERMINATOR = '\n')"
                        connection.Open()
                        adapter = New SqlDataAdapter(sql, connection)
                        adapter.Fill(ds)

                        connection.Close()
                    End Using

                Catch ex As Exception
                    MsgBox(ex.ToString)
                End Try

            End If
        Catch Ex As Exception
            MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
        Finally
            ' Check this again, since we need to make sure we didn't throw an exception on open.
            If (myStream IsNot Nothing) Then
                myStream.Close()
            End If
        End Try
    End If
End Sub

我像PHP一样执行它,但它会抛出一个不匹配列的错误,但我认为情况并非如此,因为我已经创建了相同的内容,并使用硬代码数据对其进行了测试。它成功地回答了我,感谢您的阅读,并希望得到建议。

啊哈。。。我自己解决了这个问题,关键是sql命令无法捕获我指定的动态参数,因此我执行了以下操作,它可以正常工作

                        sql = "
                        BULK INSERT cvtest
                        FROM 'close' With ( FIELDTERMINATOR = ',', 
                          ROWTERMINATOR = '\n')"
                        sql = sql.Replace("close", conString)