2012-04-16 131 views
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 

回答

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)) 

分享和享受。

+0

感謝鮑勃,它解決了我的問題!你搖滾! – user1305070 2012-04-16 12:24:18