我需要遍历Datagridview
行并在Oracle DB表中插入每一行。这应该通过检查第一个单元格是否为空来完成。这是我到目前为止所尝试的:
For Each row As DataGridViewRow In DataGridView1.Rows
If row.Cells(0).Value = Nothing Then
'Do nothing
Else
Dim test = row.Cells(0).Value.ToString
'MsgBox(test)
Const SQL1 As String = "INSERT INTO MyTable2 (ID_Table2, ID_Table1, TEST)
VALUES(ID_Table2_seq.nextval,ID_Table1_seq.currval,: test)"
cmd.CommandText = SQL1
cmd.Parameters.Add(New OracleParameter("test", test))
cmd.ExecuteNonQuery()
End If
Next
我收到错误:
已经设置外部组件抛出异常。
cmd
并连接到OracleDB。
ID_Table2_seq.nextval
和ID_Table1_seq.currval
是在Oracle中创建的序列。如果我删除添加参数并在Msgbox中显示test
值,则可以正常工作。
答案 0 :(得分:0)
解决。因为每个循环都被转过来,它首先保留了错误的值。我还必须添加另一个“OracleCommand”。这很有效:
For Each row As DataGridViewRow In DataGridView1.Rows
If row.Cells(0).Value <> Nothing Then
Using cmd1 As OracleCommand = New OracleCommand()
cmd1.Connection = con
Dim SQL1 As String = "INSERT INTO MyTable2 (ID_Table2, ID_Table1, TEST)
VALUES(ID_Table2_seq.nextval,ID_Table1_seq.currval,: test)"
cmd1.Parameters.Add(New OracleParameter("test", row.Cells(0).Value.ToString))
cmd1.CommandText = SQL1
cmd1.ExecuteNonQuery()
End Using
Else
End If
Next
有关为何会发生这种情况的任何解释?