0

以下のコードは、インポートされた行で oracle のテーブルを更新することになっています。ただし、CSV ファイルからインポートされた最初の列のみを使用して、テーブル内のすべての列を更新しているようです。操作/変更する必要がある「ReadFields」プロパティを理解しています..緊急の提案があれば教えてください。

    MsgBox("Saving...")

    Dim parser As New FileIO.TextFieldParser("C:\Documents and Settings\test\Desktop\test.csv")

    parser.Delimiters = New String() {","} ' fields are separated by comma
    parser.HasFieldsEnclosedInQuotes = True
    parser.TrimWhiteSpace = True

    Dim i As Integer

    For i = 0 To DataGridView1.ColumnCount - 1


        **Dim CurrentField = parser.ReadFields()**



        Dim sConnectionString As String = "Data Source=TEST;User ID=TEST;Password=TEST;"

        Dim strSql As String = "INSERT INTO SHOP_MATERIAL_ALLOCT(ORDER_NO, LINE_ITEM_NO, CONTRACT, PART_NO, QTY_REQUIRED, QTY_PER_ASSEMBLY) VALUES (:ORDER_NO,:LINE_ITEM_NO,:CONTRACT,:PART_NO,:QTY_REQUIRED,:QTY_PER_ASSEMBLY)"




        Using conn As New OracleClient.OracleConnection(sConnectionString)
            Using cmd As New OracleClient.OracleCommand()


                Dim adapter As New OracleDataAdapter
                conn.Open()
                cmd.Connection = conn
                cmd.CommandText = strSql
                cmd.Parameters.AddWithValue("ORDER_NO", CurrentField(i))
                cmd.Parameters.AddWithValue("LINE_ITEM_NO", CurrentField(i))
                cmd.Parameters.AddWithValue("CONTRACT", CurrentField(i))
                cmd.Parameters.AddWithValue("PART_NO", CurrentField(i))
                cmd.Parameters.AddWithValue("QTY_REQUIRED", CurrentField(i))
                cmd.Parameters.AddWithValue("QTY_PER_ASSEMBLY", CurrentField(i))



                cmd.CommandText = strSql
                adapter.InsertCommand = New OracleCommand(strSql, conn)
                adapter.UpdateCommand = cmd
                'adapter.Update(table)
                cmd.ExecuteNonQuery()
                cmd.Connection.Close()

                DataGridView1.DataSource = Nothing
            End Using
        End Using
    Next

End Sub
4

1 に答える 1

2

FileIO.TextFieldParser.ReadFields メソッドは、入力文字列のすべてのフィールドを解析し、それらを配列に格納します。上記の場合、返された配列の個々の値を反復処理する必要がありますが、常に CurrentField(i) を使用しています。以下を使用して、上記の関連する行を置き換えてみてください。

cmd.Parameters.AddWithValue("ORDER_NO", CurrentField(0))
cmd.Parameters.AddWithValue("LINE_ITEM_NO", CurrentField(1))
cmd.Parameters.AddWithValue("CONTRACT", CurrentField(2))
cmd.Parameters.AddWithValue("PART_NO", CurrentField(3))
cmd.Parameters.AddWithValue("QTY_REQUIRED", CurrentField(4))
cmd.Parameters.AddWithValue("QTY_PER_ASSEMBLY", CurrentField(5))

共有してお楽しみください。

于 2012-04-16T11:47:06.467 に答える