chapter 10 accessing database files programming in visual basic.net

46
Chapter 10 Accessing Database Files Programming In Visual Basic.NET

Post on 19-Dec-2015

300 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

Chapter 10Accessing

Database Files

Programming In

Visual Basic.NET

Page 2: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 2

Visual Basic and Databases

• VB projects can display and update the data from database files

• VB.NET uses ADO.NET for database access

• ADO.NET is the next generation of database technology, based on Microsoft's previous version ActiveX Data Objects (ADO)

Page 3: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 3

ADO.NET

• Data is stored and transferred in Extensible Markup Language (XML)

• Allows access to database data in many formats

• Two types of Connections– SQLClient for SQL Server– OLEDB for all other database formats

Page 4: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 4

Relational Database Terminology• Database includes

– Tables => collection of related data– Queries => SQL designed to select data from tables

• Table– Record => row of related data for one instance– Field => column of specific data element– Keys

• Primary => uniquely identifies a record• Foreign => links record to related record in related

table

• Relationships

Page 5: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 5

Using ADO.NET and VB

• Can display data from a database on– Windows Form– Web Form

• Add controls to form and bind data to them– Normal Controls like label, textbox– Special controls designed just for data like

DataGrid, DataList

Page 6: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 6

Steps for Data Access

DataSource

ConnectionDataAdapter

Dataset

WebForm

WindowsForm

Specific file OleDbConnection

ObjectHandles data transfer and

provides data for dataset; uses SQL

Actual data, can contain

multiple tables

Bound controls display

data

Page 7: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 7

Connection

• Used to establish link form specific file or database to program

• Types– SqlConnection

• Microsoft SQL Server databases only

– OleDBConnection• All other databases

Page 8: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 8

Setting Up a Connection

• Can be accomplished from– Toolbox– Server Explorer window– Within Data Adapter Configuration Wizard

using New Connection button

• No matter which method above is used to begin the connection, the Data Link Properties dialog appears for you to complete the task

Page 9: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 9

Creating a Connection from Server Explorer

• Click Connect to Database button

OR

• Right-click Data Connections

Page 10: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 10

Data Link Properties Dialog

• Used to define Connection's– OLE DB Provider– Actual DB Filename– Logon UserName and

Password (optional)

• Used to Test Connection

Page 11: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 11

Connections in Server Explorer

• Shows all created Connections

• Same Connection can be use for multiple projects

• Expand Connection node to view tables and fields

Page 12: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 12

Data Adapter

• Does all the work of passing data back and for the between a data source and a program

• Does not have to be a database• Can be text file, object, or even an array• Types, must match Connection type

– OleDbDataAdapter– SqlDataAdapter

• Use db prefix (e.g. dbRnR)

Page 13: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 13

Setting Up a Data Adapter from Server Explorer

• Drag Table nameto form

OR

• CTRL-click Fieldnames and drag toform

Page 14: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 14

Data Adapter Configuration Wizard

• Walks you through the steps for selecting fields in a database

• Only used if you create/add a Data Adapter from the Toolbox

• Can be used to modify existing Data Adapters also

Page 15: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 15

Dataset

• Temporary set of data stored in memory

• In ADO.NET datasets are disconnected; the copy of data kept in memory does not keep an active connection to the data source

• Dataset may contain multiple tables and relationships

Page 16: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 16

Defining a Dataset

• Drag Dataset control from the toolbox toform

• Select Data menu, Generate Dataset

• Right-click on Data Adapter and select Generate Dataset

• In all cases, you see the Generate Dataset dialog box

Page 17: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 17

Defining a Dataset (cont.)

• Name dataset with ds prefix in Generate Dataset dialog (e.g. dsBooks)

Page 18: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 18

Data Passing from Data Source to Dataset to User Interface

Data Object(Class)

WindowsForms

WebForms

DataAdapter

Presentation Tier Business Tier Data Tier

Dataset

Dataset

Dataset

DataSource

XML

XMLXML

XML

Page 19: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 19

XML Data

• Industry-standard format for storing and transferring data

• Specifications at http://www.w3.org/XML, World Wide Web Consortium (W3C)

• The needed XML for accessing databases will be automatically generated for you in Visual Basic

Page 20: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 20

XML

• Data stored in XML is all text• XML Data File

– Contains actual data

• XML Schema File– Contains descriptions for

• Fields• Data Types• Constraints, such as required fields

– .xsd file in Solution Explorer

Page 21: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 21

Fill Method

• Method of the Data Adapter executed at run time to fill the dataset

• Usually coded in Form_Load (or Page_Load for Web Projects)

• General FormDataAdapterName.Fill (DataSetName)

• Example dbRnR. Fill (dsBooks1)

Page 22: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 22

Creating Bound Controls: Data Grid• In Windows Form

– Set properties of the controls– Use Fill method

• Example: Grid Control – New control in VB.NET– Displays database records as a table

• Steps– Set up/add Connection, DataAdapter, DataSet– Add DataGrid control from toolbox (dbg

prefix)

Page 23: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 23

Creating Bound DataGrid

• Steps continued– Set properties of DataGrid to bind to data

• DataSource to DataSet name• DataMember to Table name

– Add code to populate control with data• Windows Form, Form_Load ==>

DataAdapterName.Fill (DataSetName)

Page 24: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 24

Creating Simple Bound Controls

• Labels and text boxes• Same steps:

– Set up/add Connection, DataAdapter, DataSet– Add text boxes or label control from toolbox– Set properties to bind to data

• Data Binding properties menu• Text option to be specified

– Add code to populate control with data• Windows Form, Form_Load ==> DataAdapterName.Fill (DataSetName)

Page 25: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 25

Navigating Through DataSets

• Refer to the Position and Count properties of the Windows Form's BindingContext

' Move to next recordMe.BindingContext(dsBooks1, "Books").Position +

= 1

' Move to previous record Me.BindingContext(dsBooks1, "Books").Position -

= 1

' Move to the first record Me.BindingContext(dsBooks1, "Books").Position

= 0

' Move to the last record With Me.BindingContext(DsCustomer1, "Customer") .Position = .Count - 1End With

Page 26: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 26

Retrieving Record Count

• Specify– DataSet

– Table Name

– Rows Collection

– Count Property

• ExampleintRecordCount=dsBooks1.Tables("Books").Rows.Count‘UlternativelyMe.BindingContext(DsCustomer1, "Customer").Count

Page 27: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 27

Updating a Database File

• Types of updating– Modify existing records– Add records– Delete records

• Must display the dataset in bound controls that can be used for input (no labels)

• You must write code to actually update the database

Page 28: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 28

Typical Form for Updating

Save Button is enabled only when an Add or Edit is in progress

Add caption changes to Cancel during Add or Edit

All Navigation Buttons are disabled during Add or Edit

Page 29: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 29

Update Method

• Method of DataAdapter used to write changes to database‘General FormDataAdapterName.Update (DataSet, "Table")‘ExampledbRnR. Update (dsBooks1, "Books")

• Can be executed– After every change, perform data validation,

then execute Update (Save Record button)– Once, just before program termination for all

changes execute Update (Form's Closing event)

Page 30: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 30

Update Method (cont.)

• Automatically loops through the records in a table to determine what type of update is needed and then performs the required SQL– Update

– Insert

– Delete

• Execute during Form's Closing event if running once to apply all changes

Page 31: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 31

Example - Update Form's Closing Event

' mblnIsDirty was declared in Declarations section'Save changes, Update DatabaseIf mblnIsDirty Then

If MessageBox.Show("Save Changes?", "Books" _ MessageBoxButtons.YesNo, _ MessageBoxIcon.Question ) = DialogResult.Yes Then

TrydbRnR.Update(dsBooks1, "Books")

CatchMessageBox.Show("Error saving file", "Books")

End IfEnd If

Page 32: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 32

Logic of Update Programs

• Enclose all statements that access the database in Try/Catch blocks

• Display data in bound input controls– Initially set ReadOnly property = True

• When user clicks Edit button– Set ReadOnly = False– Disable Navigation buttons– Provide Cancel and Save buttons for user

Page 33: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 33

Saving Changes Logic - User Clicks Save Button• Perform Data Validation

– If valid data then• Set ReadOnly = True• Set mblnDirty = True• Enable Navigation buttons• Disable Save button

– If invalid data then• Notify user with MessageBox• Set focus to control containing invalid data

Page 34: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 34

Canceling Changes Logic - User Click Cancel Button

• Replace changed values in controls with original values – See RejectChanges procedure (p 441)– Set ReadOnly = True– Enable Navigation buttons– Disable Save button

Page 35: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 35

Deleting Records

• Execute Delete Method of the table's Rows collection

• ExampleDim intCurrRecNum As IntegerintCurrRecNum = Me.BindingContext(dsBooks1, _

"Books").PositiondsBooks1.Books.Rows(intCurrRecNum).Delete ( )mblnIsDirty = True

Page 36: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 36

Adding Records• If user clicks Add button

– Clear bound input controls– Set ReadOnly = False– Set mblnAdding = True– Disable Navigation buttons– Provide Cancel and Save buttons for user

• Logic for Save and Cancel are same as on previous slide except for resetting mblnAdding to False

Page 37: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 37

Example - Saving an Added Record

Dim newRow As DataRow = dsBooks1.Books.NewRow

newRow("Author") = txtAuthor.TextnewRow("ISBN") = txtISBN.TextnewRow("Title") = txtTitle.Text

dsBooks1.Books.Row.Add(newRow)

Page 38: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 38

Logic for Save Button

• Must determine type of operation in progress since used for saving changes made as– Edits– Adds

• Use mblnAdding variable to identify Add operations in progress

Page 39: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 39

Bound Combo Boxes

• Provides an easy user interface for selecting records to view or update

• Windows Forms– Use ListBox or ComboBox

• Web Forms– Use ListBox or DropDownList

Page 40: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 40

Using Multiple Data Adapters

• Use when more than 1 dataset or more than 1 table in a dataset is needed

• A single Connection object can supply the connection for more than 1 data adapter

• Useful when a list is available for the user to select the record(s) to display– 1 dataset for the list itself– 1 dataset for the selected record(s)

Page 41: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 41

Parameterized Query

• DataSet with special type of SQL SELECT statement– WHERE clause is incomplete until user enters

value for criteria at run time– Uses question mark in place of criteria

• Example

SELECT Title, Author, ISBN FROM books WHERE Title = ?

Page 42: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 42

Filling a List - Windows Forms

• Set ListBox or ComboBox Properties– DataSource to DataSet name– DisplayMember to table name.field name

• Use Fill method to populate list with data

Tip: To eliminate duplicate entries in the list. Modify the SQL SELECT statement to include the DISTINCT keyword.

Page 43: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 43

Displaying the Data for the Selected Item

• At run time the user may enter the value to be used in the Parameterized Query in– TextBox

• Include an associated button for the user to click to use the value

• Be sure to check for possible empty dataset if the user enters a value not in the dataset

– Selection of a ListBox or ComboBox• Write code in the SelectedIndexChanged Event

Page 44: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 44

Example

' Get record to match selected title in listdsBooks1.Clear( )dbRnR.SelectCommand.Parameters("Title").Value

=cboTitles.TextdbRnR.Fill(dsBooks1)

• Combo box SelectedInexChange Event

• TextBox, Associated Button's Click Event

' Get record to match selected title in listdsBooks1.Clear( )dbRnR.SelectCommand.Parameters("Title").Value =

txtTitles.TextdbRnR.Fill(dsBooks1)If dsBooks1.Tables("Books").Rows.Count = 0 Then

MessageBox.Show("Title not found.")

Page 45: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 45

Making Database Projects Portable

• Connection information is directly tied to database file location

• You must move database AND– Create Connection on new computer– Configure DataAdapter– For Web Projects, also create Virtual Directory

• Less problems if you store the database in the same folder as your project

Page 46: Chapter 10 Accessing Database Files Programming In Visual Basic.NET

© 2001 by The McGraw-Hill Companies, Inc. All rights reserved.10- 46

Command Summary

' Data Adapter fills a Dataset.dbRnR. Fill (dsBooks1) ' Move to next, pervious, first and last recordMe.BindingContext(dsBooks1, "Books").Position [+ = 1, -=1,

0, .Count –1]‘Retrieving record countintRecordCount=dsBooks1.Tables("Books").Rows.Count' Get record to match selected title in listdbRnR.SelectCommand.Parameters("Title").Value

=cboTitles.Text' Save the changes in the filedbRnR. Update (dsBooks1, "Books") ‘Add a new recordDim newRow as DataRow = DsCustomer1.Customer.NewRow

dsBooks1.Books.Row.Add(newRow)' Delete current recorddsBooks1.Books.Rows(intCurrRecNum).Delete ( )