Displaying Records by Using GetString For debugging purposes, you can also dump the whole recordset into a string variable for display.. Listing A.4 basRecordsetExamples.vb: Opening and
Trang 1Working with the ADO Recordset Object
The central object in the ADODB object model is the Recordset object You will be using this object when you want to manipulate records one at a time or bring back a set of records with which to work With ADO, when you declare the type of variable you are going to use, you can instantiate it at the same time with the New keyword
Displaying Records by Using GetString
For debugging purposes, you can also dump the whole recordset into a string variable for display Listing A.4 shows you how to do this
Listing A.4 basRecordsetExamples.vb: Opening and Retrieving a Recordset for Display
Sub OpenRecordsetWithGetStringDisplayExample(ByVal txtResults As TextBox)
Dim cnn As New ADODB.Connection()
Dim rstCurr As New ADODB.Recordset()
OpenNorthwindADOConnection(cnn)
rstCurr.Open("Select * from Orders where OrderDate = '06/12/97'", cnn,
ADODB.CursorTypeEnum.adOpenForwardOnly)
txtResults.Text = rstCurr.GetString
rstCurr.Close()
End Sub
Using the OpenNorthwindADOConnection subroutine listing in Listing A.3, a
connection object is referenced, and that is passed to the Open method of a Recordset object
Tip
Notice that the cursor type returned will be ADODB.CursorTypeEnum.adOpenForwardOnly Because all that is happening is the data being dumped to a string, using this cursor type makes sense This will give you the best performance Some other choices include adOpenDynamic, adOpenKeyset, adOpenStatic, and adOpenUnspecified
Trang 2You can run this example by clicking on the button labeled Open a Recordset with GetString Display on the main form Figure A.5 shows what you will see
Figure A.5 The GetString method is handy for checking out data
Editing and Updating Records
You can use several methods to perform editing and updating of records in code Unlike the last section in which you could open the recordset as a Forward Only type cursor, you will want to open it as a Dynamic type cursor You can see this in Listing A.5
Listing A.5 basRecordsetExamples.vb: Opening and Retrieving a Recordset for Display
Sub OpenRecordsetWithEditingExample(ByVal txtResults As TextBox)
Dim cnn As New ADODB.Connection()
Dim rstCurr As New ADODB.Recordset()
Dim fldCurr As ADODB.Field
Trang 3Dim strTemp As String
OpenNorthwindADOConnection(cnn)
rstCurr.Open("Select * from Orders where OrderDate = '06/12/97'", cnn,
ADODB.CursorTypeEnum.adOpenDynamic, _
ADODB.LockTypeEnum.adLockOptimistic)
With rstCurr
Do Until EOF
strTemp = strTemp & " Old Field Value: " & _
.Fields("ShippedDate").Value
' Updating the release date
Fields("ShippedDate").Value = DateAdd(DateInterval.Day, 5, _
.Fields("ShippedDate").Value)
Update()
strTemp = strTemp & " New Field Value: " & _
.Fields("ShippedDate").Value & vbCrLf
MoveNext()
Loop
End With
txtResults.Text = strTemp
rstCurr.Close()
End Sub
You can see that the Update method is used after assigning the value that you want to the field you specify You could have specified other fields to be updated as well
Note
Trang 4Notice that when updating individual fields in the recordset, the Value property is specified to be updated You didn't have to do this in VB 6.0
or VBA, but NET doesn't allow for default properties, which the Value property is
You don't have to explicitly use an Edit method; in fact, you won't find one like you could in previous editions To add a new record, you must use the AddNew method before updating field values To delete a record, you use the Delete method
One last thing to discuss about recordsets is how to persist, or save a recordset to disk
Persisting a Recordset
This example will open up two recordsets: one from the Orders table, and one from a file created from the Orders table called OrdersForDate.rst
The code, shown in Listing A.6, opens the Orders table for a specific date and uses the GetString method to stash the contents to the results text box The routine then saves that recordset using the Save method, and passes the adPersistADTG format enumerator You could save the recordset as XML by using adPersistXML The code opens the file into a recordset and prints it by saving it to the results TextBox control
Listing A.6 basRecordsetExamples.vb: Persisting a Recordset to Disk
Sub PersistingARecordset(ByVal txtResults As TextBox)
Dim cnn As New ADODB.Connection()
Dim rstOrig As New ADODB.Recordset()
Dim rstPersist As New ADODB.Recordset()
Const adCmdFile As Long = 256
OpenNorthwindADOConnection(cnn)
' Open forward only and readonly since we are just saving it to disk
rstOrig.Open("Select * from Orders where OrderDate = '06/12/97'", cnn,
ADODB.CursorTypeEnum.adOpenStatic)
txtResults.Text = "Original Records : " & vbCrLf & rstOrig.GetString
' Delete any existing old copies
' If you don't, you will get an error
Trang 5On Error Resume Next
Kill("OrdersForDate.rst")
' Create the persistent recordset in the applications directory
On Error GoTo 0
rstOrig.Save("OrdersForDate.rst", ADODB.PersistFormatEnum.adPersistADTG)
cnn = Nothing
rstOrig = Nothing
' Open the persisted recordset
rstPersist.Open("OrdersForDate.rst", Options:=adCmdFile)
txtResults.Text = txtResults.Text & vbCrLf & vbCrLf & _
"Persisted File : " & vbCrLf & rstPersist.GetString
rstPersist.Close()
End Sub
That's all there is to it You will find that you can do most other things with recordsets using VB NET that you have been able to do in other languages Now take a look at another common task that you must do if you are using ADO with Visual Basic NET: calling stored procedures