You are on page 1of 38

VB .

NET Database Access

Microsoft Universal Data Access


ODBC: Open Database Connectivity
A driver manager
Used for relational databases

OLE DB: The OLE database protocol


Allows a program to access information in many types
of data source.
Data provider: databases, spreadsheets, etc.

ADO.NET: ActiveX Data Objects


An Interface for OLE DB.
Allow programmers to use a standard set of objects to
refer to any OLE DB data source.

.Net Applications
ADO.Net

SQL Server
OLE DB
.Net Data Provider .Net Data Provider

SQL Server
Data Source

OLE DB
Provider

OLE DB
Provider

ODBC

OLE DB
Data Source

ODBC
Data Source

Using ODBC
Windows 2000/2003:
Control Panel /Administrative Tools/DataSource(ODBC)

Three types of data source names


User DSN: usable only by you and only on the machine
currently using.
System DSN: Any one using the machine can use.
File DSN: Can be copied and used by other computers
with the same driver installed.

VB.NET Database Tools


Database connection:
Tool/Connect to database
Provider:MS Jet 4.0 OLE DB Provider
Connection

Server Explorer
Data connections:
Right click and Add Connection
Tables, Views

Toolbox:Data tab
Data Form Wizard

Steps to Retrieve Data


Establishes a connection to the database.
Executes commands against the database.
Store data results.

ADO.NET Objects
.NET Applications

Data Set
Adapter Data Reader

Command Object
Connection Object

Database

ADO.NET Objects
Connection Object: Represent a connection to the
database.
Command Object: The command object allows us
to execute a SQL statement or a stored procedure.
DataReader: It is a read-only and forward-only
pointer into a table to retrieve records.
DataSet Object: A DataSet object can hold several
tables and relationships between tables.
DataAdapter: This the object used to pass data
between the database and the dataset.

How to create an ADO.Net object?


Using Wizard
Data Form Wizard
Data Adapter Wizard

Using code:
Example:
dim strConn as string ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source =
c:\sales2k.mdb"
dim objConn as new OledbConnection(strConn)
objConn.open()

Data Form Wizard


Creating a form with ADO.Net objects and databound controls to display and update information
in a dataset.
Demo: Using Data Form Wizard to create a
navigational form.

Project/Add Windows Form/Data Form Wizard


Set connection
Choose tables
Display records in grid or in text boxes.

Adapter & Dataset Context Menu


Adapter:
Properties:
Command objects

Configure Adapter
Generate dataset
Preview data

Dataset:
View Schema: Dataset/XML

Other Data Form Demos


Display records in text boxes.
Add /Modify/Delete records.
Hierarchical forms:
Parent/Child relationship

Creating A Database Application


Without Programming
Creating a database application to display
information and update database.
A main form with buttons to open data
forms:

DisplayInfo
Enter New
Modify
Exit

Data Adapter Wizard


Configure Data Adapter and generating a
dataset:
Drag OledbDataAdapter (or databases table) to
the form.
Use the Data Adapter Wizard to configure the
Adapter.
Right Click the Adapter to preview data and
creating dataset.

Bind the dataset to controls.

Data Binding
Connect a control or property to one or more data
elements.
Simple binding: Use simple binding to display a
field value in controls that show Data Bindings in
the property window, such as text box or label.
Complex binding: Use complex binding to bind
more than one field to controls such as DataGrid
and list box. Use the controls Data Source and
Data Member to bind the data.

Creating Bound Controls


DataGrid control:
Data Source property
Data Member property
In the Form Load event, use Adapters Fill
method to load the dataset:
OleDbDataAdapter1.Fill(DataSet11)

Binding Text Box


Data Bindings property:
Text: choose field

Add navigation buttons:


The current record position within the dataset is
stored in a forms BindingContexts Position
property. This position is zero based. Add one
move to the next record, minus one move to the
previous record.

MoveNext and MoveLast Example


MoveNext:

Me.BindingContext(DataSet21, "customer").Position += 1

MoveLast:
Me.BindingContext(DataSet21, "customer").Position =
Me.BindingContext(DataSet21, "customer").Count -1

How to MovePrevious and MoveFirst?


Note: The Position property takes care of the end of file
automatically.

CurrencyManager
Dim custCurrMgr As CurrencyManager
Dim ordCurrMgr As CurrencyManager
In a procedure:

ordCurrMgr = Me.BindingContext(Ds31, "orders")


custCurrMgr = Me.BindingContext(Ds31, customer")
custCurrMgr.Position += 1
ordCurrMgr.Position += 1

Binding DataGrid
From Server Explorer, drag the table from a
database connection (or from Data tab, drag
a oleDbAdapter) onto the form.
Create dataset.
Drag DataGrid and set the DataSource and
Data Member property.
Use adapters Fill method to load the
dataset.

Displaying Many Tables with


One DataGrid
Define one Adapter for each table.
Create the dataset with multiple tables.
Add a DataGrid control and set the
DataSource proeprty to the dataset name
and leave the DataMember property blank.

Creating Hierarchical Data Grid


Define two Adapters, one for the parent table and
one for the child table.
Create the dataset.
Right-click the dataset to View Schema
Right-click the parent table and choose Add/New
Relation
Add a DataGrid control and set the DataSource
proeprty to the dataset.parentTable and leave the
DataMember property blank.
Note: DO File/SaveAll after creating the relation.

Binding ListBox
Example: Bind Customer Tables CID field to a
listbox.
Create a Adapter to retrieve CID (and Cname) fields ,
and generate the dataset.
Add ListBox and set binding properties:
Data Source
Display Member
Value Member: the actual values for items in the list box. To
display the selected items value in a text box, do:
Textbox1.text = ListBox1.SelectedValue

Can we use TextBox1.text=ListBox1.SelectedItem?


No!

Display Selected Record


Bound textbox:
Me.BindingContext(DataSet11,
"customer").Position = ListBox1.SelectedIndex

Unbound textbox

ListBox SelectedItem Property


How to display the selected record in unbound
textbox?
After binding to a data source, this property return a
DataRowView object.
What is DataRowView?
Object Browser:
System.Data
System.Data
DataRowView:

Item property

To retrieve a column from a DataRowView object


(use 0-based index to identity a column):
ListBox1.SelectedItem.Item(1)
Or: ListBox1.SelectedItem(1)
Or: ListBox1.SelectedItem(Cname)

Using Object Browser


View/Object Browser
DataSet object model:
System.Data
DataSet
Relations
Tables
Rows
Columns

Use Object Browser to study objects properties,


methods.

Collection Structure
Properties:
Count
Item(index), 0-based index

Methods:
Clear, Add, Insert, Remove, etc.

Navigate and Display Records in


Unbound Text Boxes
Use code to assign field value to the text
boxs text property.
Example:
Dim drFound As DataRow
drFound = DataSet11.CUSTOMER.Rows(0)
Or DataSet11.Tables(CUSTOMER).Rows(0)

TextBox4.Text = drFound.Item("cname")
Or drFound.Item(1)

Or: TextBox4.Text =
DataSet11.CUSTOMER.Rows(0).Item(1)
Or: DataSet21.Tables.Item("customer").Rows.Item(0).Item(1)

Implement MoveNext Button


with Unbound Control
If rowIndex < DataSet11.CUSTOMER.Rows.Count-1 Then
rowIndex += 1
TextBox1.Text = DataSet11.Tables("customer").Rows(rowIndex).Item(0)
TextBox2.Text = DataSet11.CUSTOMER.Rows(rowIndex).Item(1)

Else
MsgBox("out of bound")
End If
Note: MovePrevious, MoveLast, MoveFirst?

Using Object Browser to Study OleDB


Object
System.Data
System.Data.OleDB
OleDBConnection
Methods: New(), New(ConnectionString), Open(), Close()
Properties: ConnectionString, DataBase, Provider, TimeOut

OleDBCommannd
Methods: ExecuteReader, ExecuteNonQuery
Properties: Connection, CommandType, CommandText,
Parameters

OleDBDataAdapter
Methods: Fill
Properties: SelectCommand, InsertCommand, DeleteCommand,
UpdateCommand.

Searching with the Find Method

Another Way to Bind Listbox and Display


Selected Record
Create an adapter to retrieve Customer
records and create a dataset.
Bind the CID field to the listbox.
Use the Find method of Tables Rows
collection to find the record.
Display the found record in unbound text
boxes.

Code Example
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
ListBox1.SelectedIndexChanged
Dim drFound As DataRow
drFound = DataSet41.CUSTOMER.Rows.Find(ListBox1.SelectedValue)
Assume SelectedValue is CID

TextBox1.Text = drFound.Item("cname")

TextBox2.Text = drFound.Item("rating")
End Sub
Note: We can get the search value from other controls such as InputBox
and Textbox.

How to Determine If Record Exists


or Not
Dim foundRow As DataRow
Dim SearchValue as String
SearchValue=InputBox(Enter CID)
foundRow = DataSet41.CUSTOMER.Rows.Find (SearchValue)
If Not (foundRow Is Nothing) Then
TextBox1.Text = drFound.Item("cname")
TextBox2.Text = drFound.Item("rating")
Else
Messagerbox.show(Record not exist)
End If

Creating Parameter Query with Adapter


Configuration Wizard
Parameter query: Selection criteria is entered at
run time.
Command objects Parameters property.
Example: Orders table: OID, CID, Odate,
SalesPerson
To create a parameter for the CID field:
In the Query Design windows criteria column of the CID field, add
criteria: =?

To assign the parameter value:


OleDbDataAdapter2.SelectCommand.Parameters("cid").Value =

Demo: Get CID from a InputBox and display orders.

Parameter Query Example:


Select CID from a listBox and display
orders of the selected CID in a DataGrid

Create and bind the listbox (specify the valueMember).


Create a second adapter and define a parameter query.
In the Query Design windows criteria column, add criteria: =?
Generate a 2nd dataset (DataSet21 in this example) with the
parameter.
Create and bind the DataGrid to the dataset.
In the listboxs SelectedIndexChanged event, assign the selected
value to the parameter and fill the dataset:
DataSet21.Clear()
OleDbDataAdapter2.SelectCommand.Parameters("cid").Value =
ListBox1.SelectedValue
OleDbDataAdapter2.Fill(DataSet21)

Display Selected Record in Text Boxes

with Parameter Query


Create and bind the listbox.
Create a second adapter and define a parameter query.
In the Query Design windows criteria column, add criteria: =?

Generate the dataset with the parameter.


Create and bind textboxes to the dataset.
In the listboxs click event, assign the selected value to the
parameter and fill the dataset:
DataSet11.Clear()
OleDbDataAdapter2.SelectCommand.Parameters("cid").Value =
ListBox1.SelectedValue
OleDbDataAdapter2.Fill(DataSet11)

Send Changes in a Bound DataGrid


Back to the Database
Updating records in DataGrid:
New records are added at the end of the grid.
To delete a record, click the leftmost column to select
the record, then press the delete key.
Modify record

Add an Update button that use adapters update


method to send changes back to the data source:
OledbDataAdapter1.Update(Dataset11)

Creating Parent/Child Form with


Binding
Dataset contains Customer and Orders with
relation CustomerOrders.
Bind the textboxes to Customer table.
Bind the datagrid to the relation:
DataSource: Dataset
DataMember: Customer/CustomerOrders

Note: Study the form created by the Data Form


Wizard.

You might also like