使用ADO.NET进行保存

时间:2013-07-11 20:42:50

标签: sql vb.net ado.net sqlbulkcopy

对你来说这可能很容易,但我是初学者,而且我没有找到如何在批量复制后保存数据库中的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

但是,即使我知道它对它有所作为也不会将数据保存在我的数据库中。我做错了什么?

0 个答案:

没有答案