Tutorial RSS
 
Navigator: Home - Advanced - Updating with Data Access Components in VB.NET

Updating with Data Access Components in VB.NET

This tutorial will show you how to create your own Data Access Component that will both read and edit data from a SQL database. VB version.

We moved our web sites to Server Intellect and have found them to be incredibly professional. Their setup is very easy and we were up and running in no time.


Click Here for this project written in Visual Studio C#.NET 2008!

Looking for more .NET Database Tutorials? Click Here!

There are plenty of built-in tools to work with data in ASP.NET, but we also get the ability to create our own Data Access Components for further customization of data handling and manipulation. In this tutorial, you will learn how to build a Data Access Component (DAC) with the ability to retrieve and update database data.

Before we do anything else, we need a database. In this example, we will be working with a SQL database with one table, which has three columns - id, name and age. Once we have set up our database, we will add some sample records to work with. If you already have a database you wish to work with, add it to your project in Solution Explorer.

The first thing we want to do is to create our class. This will handle all the interaction with our database - reading and writing. We will need to write a method for reading the data, and then a method for updating records. We will start off with the reading:

Private Shared ReadOnly _connectionString As String

Private _id As Integer
Private _name As String
Private _age As String

Public Property Id() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property

Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property

Public Property Age() As String
Get
Return _age
End Get
Set(ByVal value As String)
_age = value
End Set
End Property

Public Function GetAll() As List(Of People)
Dim results As List(Of People) = New List(Of People)()
Dim con As New SqlConnection(_connectionString)
Dim cmd As New SqlCommand("SELECT id,name,age FROM tblPeople", con)
Using con
con.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader()
Do While dr.Read()
Dim newPerson As New People()
newPerson.Id = CInt(Fix(dr("Id")))
newPerson.Name = CStr(dr("Name"))
newPerson.Age = CStr(dr("Age"))
results.Add(newPerson)
Loop
End Using
Return results
End Function

Shared Sub New()
_connectionString = WebConfigurationManager.ConnectionStrings("connectionString").ConnectionString
End Sub

Need help with Windows Dedicated Hosting? Try Server Intellect. I'm a happy customer!


At present, the above code is just for retrieving the data from the database. We use a List collection to gather all records from the database, and then return to the object that calls the method. In this case, we will use the ObjectDataSource to call the method, but that's a little later in the ASPX code. Because we want to add the functionality of adding data to the database, we will need to add another method, which will look something like this:

Public Sub Update(ByVal id As Integer, ByVal name As String, ByVal age As String)
Dim con As New SqlConnection(_connectionString)
Dim cmd As New SqlCommand("UPDATE tblPeople SET name=@name,age=@age WHERE id=@id", con)
cmd.Parameters.AddWithValue("@id", id)
cmd.Parameters.AddWithValue("@name", name)
cmd.Parameters.AddWithValue("@age", age)
Using con
con.Open()
cmd.ExecuteNonQuery()
End Using
End Sub


This method uses SQL statements to update the database record with variables to it from whatever calls it. In this example, the ObjectDataSource will be calling it, which we will get to a little later.
So the entire code-behind for the class looks something like this:

Imports Microsoft.VisualBasic
Imports System.Data.SqlClient
Imports System.Collections.Generic
Imports System.Web.Configuration

Public Class People
Private Shared ReadOnly _connectionString As String

Private _id As Integer
Private _name As String
Private _age As String

Public Property Id() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property

Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property

Public Property Age() As String
Get
Return _age
End Get
Set(ByVal value As String)
_age = value
End Set
End Property

Public Sub Update(ByVal id As Integer, ByVal name As String, ByVal age As String)
Dim con As New SqlConnection(_connectionString)
Dim cmd As New SqlCommand("UPDATE tblPeople SET name=@name,age=@age WHERE id=@id", con)
cmd.Parameters.AddWithValue("@id", id)
cmd.Parameters.AddWithValue("@name", name)
cmd.Parameters.AddWithValue("@age", age)
Using con
con.Open()
cmd.ExecuteNonQuery()
End Using
End Sub

Public Function GetAll() As List(Of People)
Dim results As List(Of People) = New List(Of People)()
Dim con As New SqlConnection(_connectionString)
Dim cmd As New SqlCommand("SELECT id,name,age FROM tblPeople", con)
Using con
con.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader()
Do While dr.Read()
Dim newPerson As New People()
newPerson.Id = CInt(Fix(dr("Id")))
newPerson.Name = CStr(dr("Name"))
newPerson.Age = CStr(dr("Age"))
results.Add(newPerson)
Loop
End Using
Return results
End Function

Shared Sub New()
_connectionString = WebConfigurationManager.ConnectionStrings("connectionString").ConnectionString
End Sub
End Class


We are now done with the class; we just need to incorporate it into the ASPX page.
To do this, all we will do is include two controls: GridView and ObjectDataSource. By specifying a few attributes of these controls, we will unlock the functionality of the class we just created. The ASPX page will look something like this:

<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1"
DataKeyNames="id" AutoGenerateEditButton="true" Width="370px" />

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="People"
SelectMethod="GetAll" UpdateMethod="Update" />
</form>


I just signed up at Server Intellect and couldn't be more pleased with my Windows Server! Check it out and see for yourself.




Click Here for this project written in Visual Studio C#.NET 2008!

Looking for more .NET Database Tutorials? Click Here!
Download Project Source - Enter your Email to be emailed a link to download the Full Source Project used in this Tutorial!



100% SPAM FREE! We will never sell or rent your email address!

411asp.net123aspxDotNetFreaksServer Intellect