none
刪除資料有沒有ds.GetChanges的差異是什麼? RRS feed

  • 問題

  • 1. 請詳列開發環境版本與語系。
    •Visual Studio 2008 Professional 繁體中文版
    •編譯器語系:Visual Basic
    •作業系統:Windows 7 Professional 64位元
    •作業系統語系:繁體中文版
    2. 請描述預期成果。
    •刪除資料有沒有ds.GetChanges的差異是什麼?視覺化檢視上看起來並沒有差異?
     Private Sub Del_Btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Del_Btn.Click
            Dim Conn As New SqlConnection(My.Settings.NMS)
            Dim cmd1 As String = "Select * From Table3"
            Dim cmd As SqlCommand = New SqlCommand("DELETE FROM Table3 WHERE ID=@ID", Conn)
            cmd.Parameters.Add("@ID", SqlDbType.NVarChar, 50, "ID").Value = TextBox10.Text.ToString()
            Dim adapter As SqlDataAdapter = New SqlDataAdapter(cmd1, Conn)
            Dim ds As DataSet = New DataSet()
            Dim dt As DataTable = ds.Tables("Table3")
            adapter.FillSchema(ds, SchemaType.Source, "Table3")
            adapter.Fill(ds, "Table3")
            DataGridView4.DataSource = ds.Tables("Table3")
            Dim foundRow As DataRow = ds.Tables("Table3").Rows.Find(TextBox10.Text)
            If foundRow IsNot Nothing Then
                foundRow.Delete()
            Else
                MsgBox("沒有找到" & TextBox10.Text & "這一筆資料")
            End If
            ds.GetChanges(DataRowState.Deleted)
            adapter.DeleteCommand = cmd
            Dim count As Int32 = adapter.Update(ds, "Table3") '執行刪除標示要刪除的資料
            MessageBox.Show("刪除" & count & "筆資料完成")

    • 已編輯 fanchiangkun 2017年10月28日 上午 07:51 更新內容
    2017年10月27日 下午 05:55

解答

  • GetChanges的目的是為了取出DataSet中標示為新增, 刪除, 或修改過的記錄, 如果呼叫DataAdapter的Update函式的第一個參數不是GetChanges函式傳回的DataSet, 則呼叫Update函式可以將資料集中新增, 刪除, 或修改過的記錄更新到資料庫, 這種狀況下有沒有呼叫GetChanges是沒有差別的
    • 已標示為解答 fanchiangkun 2017年10月30日 下午 10:03
    2017年10月28日 上午 08:20

所有回覆

  • GetChanges的目的是為了取出DataSet中標示為新增, 刪除, 或修改過的記錄, 如果呼叫DataAdapter的Update函式的第一個參數不是GetChanges函式傳回的DataSet, 則呼叫Update函式可以將資料集中新增, 刪除, 或修改過的記錄更新到資料庫, 這種狀況下有沒有呼叫GetChanges是沒有差別的
    • 已標示為解答 fanchiangkun 2017年10月30日 下午 10:03
    2017年10月28日 上午 08:20
  • GetChanges的目的是為了取出DataSet中標示為新增, 刪除, 或修改過的記錄, 如果呼叫DataAdapter的Update函式的第一個參數不是GetChanges函式傳回的DataSet, 則呼叫Update函式可以將資料集中新增, 刪除, 或修改過的記錄更新到資料庫, 這種狀況下有沒有呼叫GetChanges是沒有差別的
    如果呼叫DataAdapter的Update函式的第一個參數不是GetChanges函式傳回的DataSet
    有相關資訊的網頁或範例,再請您提供給小弟參考,感激不盡。




    2017年10月30日 下午 09:11
  • 意思大概是這樣:

    DataSet dsDeleted = ds.GetChanges(DataRowState.Deleted)
    adapter.DeleteCommand = cmd
    Dim count As Int32 = adapter.Update(dsDeleted, "Table3")
    

    2017年10月31日 上午 12:27
  • 意思大概是這樣:

    DataSet dsDeleted = ds.GetChanges(DataRowState.Deleted)
    adapter.DeleteCommand = cmd
    Dim count As Int32 = adapter.Update(dsDeleted, "Table3")

    新增ds.GetChanges(DataRowState.Added)
    刪除ds.GetChanges(DataRowState.Deleted)
    修改ds.GetChanges(DataRowState.Modifieddded)
    其他則不用呼叫ds.GetChanges,應該是這個意思。
    2017年10月31日 下午 08:58
  • ds.GetChanges(DataRowState.Added)=>取出新增到DataSet的記錄
    ds.GetChanges(DataRowState.Deleted)=>取出DataSet中被刪除的記錄
    ds.GetChanges(DataRowState.Modifieddded)=>取出DataSet中被修改過的記錄
    2017年11月1日 上午 12:25