Thursday, June 18, 2009

DataRowStates of DataSet

Programmers always look for shortcuts and ease while he perform his job. Microsoft provides a number of Services in this Regard. VisualStudio.NET is one of the remarkable development of Microsoft. (Enough to talk about Microsoft)


Here, I want to tell you that how can we get only that data from DataSet which we manipulate while we were performing our job.

DataSet has a number of DataRowState Properties:

1) DataRowState.Added
2) DataRowState.Deleted
3) DataRowState.Modified
4) DataRowState.Detached
5) DataRowState.Unchanged


DataRowState help us in getting the manipulated data which we either Change, Delete or Add.

Now, How can we use these state. I am telling you below but first we have to fill a dataset by any values. For Example, I create my own database. Insert values in it and after then I call them through query into dataset.

Here, I assume that you must have fill your dataset already. Now change a value of any row from your dataset. To get confirmation that something is changed you can use the below command:

MessageBox.Show(dataSetName.HasChanges)

If it return you "True" then we get confirmed that something is modified in dataset. Now you can get all the changes either modified rows, added rows, deleted rows, etc. by single command

ds.GetChanges()

or you can get only those deleted/Modified/Added rows by following the below code:

ds.GetChanges(DataRowState.Modified)

The above command will return you only updated rows.

Below I am writing entire Code for the easiness of your sake:


/////////////Form Loaded Method//////////////////////
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

MyBase.Load
Try
con.Open()
da = New SqlDataAdapter("select * from tblstudent_Main", con)
da.SelectCommand.ExecuteNonQuery()
da.Fill(ds, "table1")
con.Close()
ds.Tables(0).Rows(1).Item(1) = "Zeeshan"
ds.Tables(0).Rows(5).Item(1) = "Ahmed"
Dim dr As DataRow
dr = ds.Tables(0).NewRow
dr.Item(0) = 7
dr.Item(1) = "Memon"
ds.Tables(0).Rows.Add(dr)
Catch ex As Exception

End Try
End Sub



//////////Button Click Method/////////////////
MessageBox.Show(ds.HasChanges)
Dim ds2 As New DataSet
ds2 = ds.GetChanges()
For Each dr As DataRow In ds2.Tables(0).Rows
///Return True if the rows are added else False

''MessageBox.Show(ds2.HasChanges(DataRowState.Added))

//Return you DataRowState. Remember if you do not write toString() then
it will return you numeric value.

MessageBox.Show(dr.RowState.ToString)

Next
DataGridView1.DataSource = ds2.Tables(0)

MessageBox.Show("transfereed successfully")


I hope that this will help you alot in understanding the DataRowState Concept.

No comments: