View
223
Download
0
Category
Preview:
Citation preview
8/10/2019 Vb .Net Dataaccesss Vii
1/38
VB .NET Database Access
8/10/2019 Vb .Net Dataaccesss Vii
2/38
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 typesof 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 torefer to any OLE DB data source.
8/10/2019 Vb .Net Dataaccesss Vii
3/38
.Net Applications
OLE DB
Provider
OLE DBData Source
OLE DB
Provider
ODBC
ODBC
Data Source
SQL Server
Data Source
SQL Server
.Net Data Provider
OLE DB
.Net Data Provider
ADO.Net
8/10/2019 Vb .Net Dataaccesss Vii
4/38
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 computerswith the same driver installed.
8/10/2019 Vb .Net Dataaccesss Vii
5/38
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
8/10/2019 Vb .Net Dataaccesss Vii
6/38
Steps to Retrieve Data
Establishes a connection to the database.
Executes commands against the database.
Store data results.
8/10/2019 Vb .Net Dataaccesss Vii
7/38
ADO.NET Objects
Data Set
.NET Applications
Data Reader
Command Object
Connection Object
Database
Adapter
8/10/2019 Vb .Net Dataaccesss Vii
8/38
ADO.NET Objects
Connection Object: Represent a connection to thedatabase.
Command Object: The command object allows usto execute a SQL statement or a stored procedure.
DataReader: It is a read-only and forward-onlypointer 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.
8/10/2019 Vb .Net Dataaccesss Vii
9/38
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()
8/10/2019 Vb .Net Dataaccesss Vii
10/38
Data Form Wizard
Creating a form with ADO.Net objects and data-
bound 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.
8/10/2019 Vb .Net Dataaccesss Vii
11/38
Adapter & Dataset Context Menu
Adapter:
Properties:
Command objectsConfigure Adapter
Generate dataset
Preview data
Dataset:
View Schema: Dataset/XML
8/10/2019 Vb .Net Dataaccesss Vii
12/38
Other Data Form Demos
Display records in text boxes.
Add /Modify/Delete records.
Hierarchical forms:
Parent/Child relationship
8/10/2019 Vb .Net Dataaccesss Vii
13/38
Creating A Database Application
Without Programming Creating a database application to display
information and update database.
A main form with buttons to open dataforms:
DisplayInfo
Enter New
Modify
Exit
8/10/2019 Vb .Net Dataaccesss Vii
14/38
8/10/2019 Vb .Net Dataaccesss Vii
15/38
Data Binding
Connect a control or property to one or more data
elements.
Simple binding: Use simple binding to display afield 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.
8/10/2019 Vb .Net Dataaccesss Vii
16/38
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)
8/10/2019 Vb .Net Dataaccesss Vii
17/38
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 onemove to the next record, minus one move to the
previous record.
8/10/2019 Vb .Net Dataaccesss Vii
18/38
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.
8/10/2019 Vb .Net Dataaccesss Vii
19/38
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
8/10/2019 Vb .Net Dataaccesss Vii
20/38
Binding DataGrid
From Server Explorer, drag the table from adatabase connection (or from Data tab, drag
a oleDbAdapter) onto the form. Create dataset.
Drag DataGrid and set the DataSource andData Member property.
Use adapters Fill method to load thedataset.
8/10/2019 Vb .Net Dataaccesss Vii
21/38
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.
8/10/2019 Vb .Net Dataaccesss Vii
22/38
Creating Hierarchical Data Grid
Define two Adapters, one for the parent table andone for the child table.
Create the dataset.
Right-click the dataset to View Schema
Right-click the parent table and choose Add/NewRelation
Add a DataGrid control and set the DataSource
proeprty to the dataset.parentTable and leave theDataMember property blank.
Note: DO File/SaveAll after creating the relation.
8/10/2019 Vb .Net Dataaccesss Vii
23/38
Binding ListBox
Example: Bind Customer Tables CID field to alistbox.
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. Todisplay the selected items value in a text box, do:
Textbox1.text = ListBox1.SelectedValue
Can we use TextBox1.text=ListBox1.SelectedItem?
No!
8/10/2019 Vb .Net Dataaccesss Vii
24/38
Display Selected Record
Bound textbox:
Me.BindingContext(DataSet11,
"customer").Position = ListBox1.SelectedIndex
Unbound textbox
8/10/2019 Vb .Net Dataaccesss Vii
25/38
ListBox SelectedItem Property
How to display the selected record in unboundtextbox?
After binding to a data source, this property return aDataRowView 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)
8/10/2019 Vb .Net Dataaccesss Vii
26/38
Using Object Browser
View/Object Browser
DataSet object model:
System.Data DataSet
Relations
Tables
Rows
Columns
Use Object Browser to study objects properties,methods.
8/10/2019 Vb .Net Dataaccesss Vii
27/38
Collection Structure
Properties:
Count
Item(index), 0-based index
Methods:
Clear, Add, Insert, Remove, etc.
8/10/2019 Vb .Net Dataaccesss Vii
28/38
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)
8/10/2019 Vb .Net Dataaccesss Vii
29/38
Implement MoveNext Button
with Unbound ControlIf 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?
8/10/2019 Vb .Net Dataaccesss Vii
30/38
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.
8/10/2019 Vb .Net Dataaccesss Vii
31/38
Searching with the Find MethodAnother 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.
8/10/2019 Vb .Net Dataaccesss Vii
32/38
Code Example
Private Sub ListBox1_SelectedIndexChanged(ByVal sender AsSystem.Object, ByVal e As System.EventArgs) HandlesListBox1.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 InputBoxand Textbox.
8/10/2019 Vb .Net Dataaccesss Vii
33/38
How to Determine If Record Exists
or NotDim 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")
ElseMessagerbox.show(Record not exist)
End If
8/10/2019 Vb .Net Dataaccesss Vii
34/38
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.
8/10/2019 Vb .Net Dataaccesss Vii
35/38
Parameter Query Example:
Select CID from a listBox and displayorders 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 theparameter.
Create and bind the DataGrid to the dataset.
In the listboxs SelectedIndexChanged event, assign the selectedvalue to the parameter and fill the dataset:
DataSet21.Clear() OleDbDataAdapter2.SelectCommand.Parameters("cid").Value =ListBox1.SelectedValue
OleDbDataAdapter2.Fill(DataSet21)
8/10/2019 Vb .Net Dataaccesss Vii
36/38
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 theparameter and fill the dataset: DataSet11.Clear()
OleDbDataAdapter2.SelectCommand.Parameters("cid").Value =ListBox1.SelectedValue
OleDbDataAdapter2.Fill(DataSet11)
8/10/2019 Vb .Net Dataaccesss Vii
37/38
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 selectthe 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)
8/10/2019 Vb .Net Dataaccesss Vii
38/38
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 FormWizard.
Recommended