用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生成”的异常。

你可能感兴趣的:(用dataset保存数据注意的问题)