您的位置:首页 > 其它

用dataset保存数据注意的问题

2014-01-06 11:46 218 查看
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生成”的异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: