对你来说这可能很容易,但我是初学者,而且我没有找到如何在批量复制后保存数据库中的mofifications。
我正在尝试使用以下代码将.csv文件导入我的数据库:
Public Sub ImportCSV2SQL(ByVal fileName As String, ByRef sqlTable As DataTable, ByVal column2Import() As Integer)
' Préparation des variables SQL
Dim sqlConxtion As SqlConnection = New SqlConnection(My.Resources.sqlHQSdbConxtion)
Dim sqlAction As SqlBulkCopy = New SqlBulkCopy(My.Resources.sqlHQSdbConxtion)
Dim sqlCommand As New SqlCommand("DELETE FROM dbo." & sqlTable.TableName, sqlConxtion)
' Préparation des variables StreamReader et CsvReader
Dim stream As StreamReader = New StreamReader(fileName) : Dim streamCount As StreamReader = New StreamReader(fileName)
Dim csvCopy As CsvReader = New CsvReader(stream, True, ";"c)
' Décompte du nombre de lignes dans le fichier *.CSV
Dim nbrLines As Integer = 0
While streamCount.Peek <> -1
nbrLines += 1
Dim line As String = streamCount.ReadLine()
End While
' Comparaison avec la table existante dans SQL et le nombre de lignes est plus conséquente
' dans le *.CSV alors remplacement de la table sinon demande à l'utilisateur s'il veut la
' remplacer(1) ou annuler l'action (2)
If sqlTable.Rows.Count <= nbrLines - 1 And sqlTable.Rows.Count <> 0 Then
If MsgBox("The number of rows of the CCList that you are trying to import is higher than those of those of the already existing " & _
"CCList. Do you want to replace the old table or abort the importation?", MessageBoxButtons.OKCancel) = 1 Then
Exit Sub
End If
End If
' Tentative de se conecter au serveur SQL
Try
sqlCommand.Connection.Open()
Catch myerror As SqlException
MsgBox("Error connection SQL")
sqlCommand.Connection.Close()
Exit Sub
End Try
' Suppression de la table afin de pouvoir y introduire de nouvelles données
sqlCommand.ExecuteNonQuery()
sqlCommand.Connection.Close()
' Mappings des colonnes entre le fichier *.CSV et la table de destination
For i = 0 To column2Import.Length - 1
sqlAction.ColumnMappings.Add(column2Import(i), i)
Next
' Transfère des données des données du fichier *.CSV à la table de destination
sqlAction.DestinationTableName = sqlTable.TableName
sqlAction.WriteToServer(csvCopy)
End Sub
但是,即使我知道它对它有所作为也不会将数据保存在我的数据库中。我做错了什么?