vba如何在SQL批量语法中插入动态参数
我正在尝试使用vb opendialog打开一个随机csv文件,并将csv中的数据插入SQL Server 2014。当涉及到硬代码数据时,它看起来不错,但对于动态随机上传来说,它有问题。我被困在这里了,请帮帮我 这是我的动态测试代码,我已经创建了与csv文件的文件格式和列名匹配的数据库、表和列: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
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)