0

Visual Basic .Net 2010 を使用して、コンマ区切りの CSV ファイルから SQL Server R2 データベースの既存のテーブルにレコードをインポートする必要があります。テーブル内の既存のレコードは、インポートする前に削除する必要があります。インメモリ一時 DataTable を作成し、TextFieldParser を使用して CSV ファイルからレコードを入力することができました。インメモリ DataTable を DataGridView にバインドして確認しました。しかし、2番目の部分、つまりメモリ内のDataTableからSQLテーブルにレコードを挿入する方法はわかりません。

私は次のことをしました:

`Dim TextFileReader As New TextFieldParser("C:\csvtosql\StockVB\VFPFiles\ExpSysusers.csv")

TextFileReader.TextFieldType = FileIO.FieldType.Delimited
TextFileReader.SetDelimiters(",")

Dim TextFileTable As DataTable = Nothing

Dim Column As DataColumn
Dim Row As DataRow
Dim UpperBound As Int32
Dim ColumnCount As Int32
Dim CurrentRow As String()

CurrentRow = TextFileReader.ReadFields() ' Ignore the header
While Not TextFileReader.EndOfData
    Try
        CurrentRow = TextFileReader.ReadFields()

        If Not CurrentRow Is Nothing Then
            ''# Check if DataTable has been created
            If TextFileTable Is Nothing Then
                TextFileTable = New DataTable("TextFileTable")
                ''# Get number of columns
                UpperBound = CurrentRow.GetUpperBound(0)
                ''# Create new DataTable
                For ColumnCount = 0 To UpperBound
                    Column = New DataColumn()
                    Column.DataType = System.Type.GetType("System.String")
                    Column.ColumnName = "Column" & ColumnCount
                    Column.Caption = "Column" & ColumnCount
                    Column.ReadOnly = True
                    Column.Unique = False
                    TextFileTable.Columns.Add(Column)
                Next
            End If

            Row = TextFileTable.NewRow
            For ColumnCount = 0 To UpperBound
                Row("Column" & ColumnCount) = CurrentRow(ColumnCount).ToString
            Next
            TextFileTable.Rows.Add(Row)

        End If

    Catch ex As Exception
        MsgBox("Line " & ex.Message & "is not valid and will be skipped.")
    End Try
End While
TextFileReader.Dispose()
DataGridView1.DataSource = TextFileTable

` 誰か助けて/案内してくれませんか??

次のコードを試して、DataTable からレコードを読み取り、SQL テーブルに挿入しました。しかし、最初のレコードだけが追加されているようです。

For Each TextFileTableDataRow As DataRow In TextFileTable.Rows
        Dim Column0 As String = TextFileTableDataRow("Column0")
        Dim Column1 As String = TextFileTableDataRow("Column1")
        Dim Column2 As Int16 = TextFileTableDataRow("Column2")
        Dim Column3 As Boolean = TextFileTableDataRow("Column3")

        Dim strSqlQry As String = "INSERT INTO Personnel (Operator,OpPassword,SecurityLevel,Active) VALUES (@Operator,@OpPassword,,@SecurityLevel,@Active)"
        Dim SqlconnectionString As String = gcconnect

        Using connection As New SqlClient.SqlConnection(SqlconnectionString)
            Dim cmd As New SqlClient.SqlCommand(strSqlQry, connection)

            ' create command objects and add parameters
            With cmd.Parameters
                .AddWithValue("@Operator", Column0)
                .AddWithValue("@OpPassword", Column1)
                .AddWithValue("@SecurityLevel", Column3)
                .AddWithValue("@LoggedOn", Column7)
            End With

            Dim adapter As New SqlClient.SqlDataAdapter()
            adapter.InsertCommand = cmd

            '--Update the original SQL table from the datatable
            Dim iRowsInserted As Int32 = adapter.Update(TextFileTable)
        End Using
    Next

次のエラーが表示されます。

4

0 に答える 0