用dataset保存数据注意的问题

Private Function Save() As Boolean

        Try

            Dim dschgs As DataSet = ds.GetChanges(DataRowState.Added + DataRowState.Deleted + DataRowState.Modified)

            Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter("select lotno,isconfirm, confirmuser, confirmdate, eventuser, eventdate from cuttoship", oracleConn)

            Dim cmbCDDetail As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(da)

            da.Update(dschgs, "cuttoship")

            ds.AcceptChanges()

            Return True

        Catch ex As Exception

            Return False

        End Try

    End Function
Private Sub btnUnConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUnConfirm.Click

        Dim confirmTb As DataTable = gGrid.getCurrData(dgv)

        Dim r_confirm() As DataRow = confirmTb.Select("s_select='True' and isconfirm='Y'")

        If r_confirm.Length = 0 Then

            MessageBox.Show("no seleted data.")

            Return

        End If

        If MessageBox.Show("Do you want to confirm these record?", "Confirm Sure", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = DialogResult.No Then Return



        Try

            Dim sql As String = ""

            Dim time As String = Now.ToString("yyyy-MM-dd HH:mm:ss")

            Dim row() As DataRow

            For Each r As DataRow In r_confirm

                row = ds.Tables("cuttoship").Select("lotno='" + r.Item("lotno") + "'")

                row(0).BeginEdit()

                row(0).Item("isconfirm") = "N"

                row(0).Item("confirmuser") = DBNull.Value

                row(0).Item("confirmdate") = DBNull.Value

                row(0).Item("eventuser") = g.gUserId

                row(0).Item("eventdate") = time

                row(0).EndEdit()

            Next

            If Save() Then

                MessageBox.Show("Confirm successfully!")

            Else

                MessageBox.Show("Confirm failed!")

                ds.RejectChanges()

            End If

        Catch ex As Exception

            MessageBox.Show("Un Confirm failed!")

            ds.RejectChanges()

        End Try

    End Sub

用dataset保存数据不能存在空的数据,必须用DBNull.Value代替,否则出现“并行违规”的异常。

目标表必须有主键,否则出现“对于不返回任何键列信息的SelectCommand,不支持UpdateCommand 的动态SQL生成”的异常。

你可能感兴趣的:(Data)