Visual Basic Database Access
Download
Report
Transcript Visual Basic Database Access
Introduction to ADO.Net, VB.Net
Database Tools and Data Binding
ISYS 512
Client/Server Structure
a. Presentation – user interface
• Menus, forms, reports, etc
b. Processing logic
• Business rules
c. Database
SQL queries
Client
Database Server
Results
Database Processing
• Querying database
• Updating database:
– Insertion, deletion, modification
Steps to Retrieve Data
• Establishes a connection to the database.
• Executes commands against the database.
• Store data results.
A Simplified View of ADO.Net
Objects
Ado.Net
Data Provider
Data Consumer
Adapter
Dataset
WinForm
Connection
Command
WebForm
Reader
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.
Data Providers
• ODBC Provider
– Open Database Connectivity
• A driver manager
• Used for relational databases
• OLE DB Provider
– OLE DB interfaces provide applications with uniform
access to data stored in diverse information sources, or
data stores.
– Access
• SQL Server Provider
• Oracle Provider
Using ODBC
• Windows XP:
• 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.
• Demo:
– Excel: Data/Import
– Access: File/Get External Data/Import, then select
ODBC data source
VB.NET Database Tools
• Database connection:
– Tools/Connect to database
• Data Source
• Server Explorer
– Data connections: Right click data connection
• Add Connection
– Tables, Views
• Create new SQL Server Database
• Toolbox:Data tab
• Data/Add New Data Source
Creating SQL Server Database
• From Server Explorer, right click data connection and
choose:
• Create new SQL Server Database
• Server name:
– LocalServerName\SQLExpress
• Add new table: Right click Tables and choose Add New
Table
• Add rows: Right click the table name and choose Show
table data.
• Note: After creating the database, you may create an
ODBC DSN to connect to it.
How to create ADO.Net objects?
• Automatically generated when creating
data bound form.
– Form wizard
• Using 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 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 control’s Data Source and
Data Member to bind the data.
Creating Data Bound Form
• Creating a form with ADO.Net objects and databound controls to display and update information in
a dataset.
• Demo:
– Add data source:
• Data/Add New Data Source
• Data/Show Data Source
– Click the dropdown list next to the table’s name:
• Datagrid view
• Details
– Drag the table to form.
Items Added to the Form
• Connection
• Table Adapter: click smart tag
– Add query
– Preview data
• Dataset:
– Edit in dataset designer
• Binding Source
– Add query: Add a new tool strip.
– Preview data
• Binding navigator
• Code view: Form load event
Generated Code
Private Sub CUSTOMERBindingNavigatorSaveItem_Click(ByVal sender
As System.Object, ByVal e As System.EventArgs) Handles
CUSTOMERBindingNavigatorSaveItem.Click
Me.Validate()
Me.CUSTOMERBindingSource.EndEdit()
Me.CUSTOMERTableAdapter.Update(Me.SalesDBDataSet.CUSTOMER)
End Sub
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the
'SalesDBDataSet.CUSTOMER' table. You can move, or remove it, as
needed.
Me.CUSTOMERTableAdapter.Fill(Me.SalesDBDataSet.CUSTOMER)
End Sub
Other Data Form Demos
• DataGrid View
• Add /Modify/Delete records.
• Read only form:
– Delete AddNew, Delete, Save buttons from
navigator bar.
Hierarchical Forms
• Parent table/Child table
– Add parent table and child table to Data Source
– Drag the parent table and the child table to the form.
Parent table uses detail view and child table uses
dataGrid view
– Click Dataset object’s smart tag to choose Edit in
Dataset Designer
– With the designer, right click the parent table and
choose Add/Relation
– Change dataGrid’s DataSource property to the relation.
Detail Form with Bound ListBox
• Example: Customer table form with CID listbox
and displays selected customer information in
textboxes.
– Choose detail view for the customer table.
– Click the dropdown list next to the CID field and click
ListBox
– Drag the Customer table to the form.
– Bind the CID field to the BindingSource:
• Activate the Property window and click the listbox
• Set the DataSOurce property to BindingSource
• Set the Display Member property to CID
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:
– From the Data tab of the ToolBox, Drag
OledbDataAdapter to the form.
– Use the Data Adapter Wizard to configure the Adapter.
– Right Click the Adapter to preview data and create
dataset.
• Bind the dataset to controls.
• In the Form Load event, use Adapter’s Fill method
to load the dataset:
• OleDbDataAdapter1.Fill(DataSet11)
Creating Bound DataGridView
• DataGridView control:
– Data Source property:
• DataSet
– Data Member property
• A table in the dataset
– In the Form Load event, use Adapter’s Fill method to
load the dataset:
• OleDbDataAdapter1.Fill(DataSet11)
• Note: A BindingSource object is created after
choosing data source.
BindingSource Object
• It is an object that keeps track of position (the current row)
of a data source.
• Useful properties:
– DataSource
– DataMember
– Position property: is the index of the current row. The index is a 0based index, the first record has a position of 0.
• Methods:
–
–
–
–
MoveFirst, MoveLast, MoveNext, MovePrevious
AddNew
AllowEdit
EndEdit
Adding AddNew and Save Button
•
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
•
CUSTOMERBindingSource.AddNew()
•
End Sub
•
Private Sub Button2_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles Button2.Click
•
CUSTOMERBindingSource.EndEdit()
•
CUSTOMERTableAdapter.Update(SalesDBDataSet1.CUSTOMER)
•
End Sub
Adding AddNew and Save Button
AddNew button: Use BindingSource AddNew Method:
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
CUSTOMERBindingSource.AddNew()
End Sub
Save button: Use BindingSource EndEdit method and
Adapter’s Update method:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
CUSTOMERBindingSource.EndEdit()
CUSTOMERTableAdapter.Update(SalesDBDataSet1.CUSTOMER)
End Sub
BindingSource’s Position Property
• If controls are bound to a BindingSource object, to
move the current record we change the Position
property of the BindingSource object:
– To move to the next record:
• Me.EmpBindingSource.Position += 1
• Or Me.EmpBindingSource.MoveNext
– To move to the previous record:
• Me.EmpBindingSource.Position -= 1
• Or Me.EmpBindingSource.MovePrevious
Binding Text Box
• Select Data Bindings property:
– Text: choose field
• Add navigation buttons:
– MoveNext:
• CUSTOMERBindingSource.Position += 1
– MovePrevious:
• CUSTOMERBindingSource.Position -= 1
Other Objects Related to Data
Binding
• BindingContext: It is an object that manages a
collection of data sources used for binding.
• CurrencyManager: It is an object that keeps track
of position (the current row) of a data source. Two
useful properties:
– Position property: is the index of the current row. The
index is a 0-based index, the first record has a position
of 0.
– Count property: The number of rows in the data source.
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.
• Note: Me.BindingContext(DataSet21, "customer") returns
a CurrencyManager object.
BindingNavigator Object
• This object automatically adds navigation
buttons to the form.
• Property:
– BindingSource property
• Specify a BindingSource object
• (Must first define a BindingSource object)
Binding ListBox
• Example: Bind Customer Table’s CID field
to a listbox.
– Create a Adapter for Customer table , and
generate the dataset.
– Add ListBox and set binding properties:
• Data Source: Customer table
• Display Member: Field to display in the listbox.
• Value Member: the actual values for items in the list
box.
Display Selected Record
• Bound textbox (same data source as the listbox):
– If the Listbox and the textbox are bound to the same
BindingSource object, the textbox will automatically
displays the record of the selected listbox item.
• Unbound textbox
– To display the ValueMember
• Textbox1.text = ListBox1.SelectedValue
– To display other fields:
• Textbox1.text = ListBox1.SelectedItem(“Cname”)
• Can we use TextBox1.text=ListBox1.SelectedItem?
No!
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
– DataRowView:
Item property is the default 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 object’s properties,
methods.