38
Chapter 10, Slide 1 Starting Out with Visual Basic 3 rd Edition Chapter 10 Working With Databases

Chapter 10, Slide 1Starting Out with Visual Basic 3 rd Edition Chapter 10 Working With Databases

Embed Size (px)

Citation preview

Chapter 10, Slide 1 Starting Out with Visual Basic 3rd Edition

Chapter 10

Working With Databases

Chapter 10, Slide 2 Starting Out with Visual Basic 3rd Edition

Chapter 10Introduction

Chapter 10, Slide 3 Starting Out with Visual Basic 3rd Edition

Chapter 10 Topics

Basic database terminology Fundamental database concepts Use ADO .NET to access databases Display, sort, and update database data Use the DataGridView control

Chapter 10, Slide 4 Starting Out with Visual Basic 3rd Edition

Section 10.1What Is a Database?

A Database is a Collection of Data Organized in Tables, Rows, and Columns

Chapter 10, Slide 5 Starting Out with Visual Basic 3rd Edition

Terminology Database: a collection of interrelated tables Table: a logical grouping of related data

• A category of people, places, or things• For example, employees or departments• Organized into rows and columns

Field: an individual piece of data pertaining to an item, an employee name for instance

Record: the complete data about a single item such as all information about an employee• A record is a row of a table

Chapter 10, Slide 6 Starting Out with Visual Basic 3rd Edition

Database Table

Row(Record)

Column Field

Each table has a primary key• Uniquely identifies that row of the table• PartNumber is the primary key in this example

Columns also called fields or attributes Each column has a particular data type

Chapter 10, Slide 7 Starting Out with Visual Basic 3rd Edition

VB and Access Data Types

VB data types must match table data types MS Access and VB have similar data types

Access Data Type Visual Basic Data Type

AutoNumber Long

Date/Time Date, DateTime

Number, Integer Integer

Number, long integer Long Integer

Number, single Single

Number, double Double

Text String

Yes/No Boolean

Chapter 10, Slide 8 Starting Out with Visual Basic 3rd Edition

Database Design A database schema is the design of tables,

columns, and relationships between tables Define a column for each piece of data Allow plenty of space for text fields For the members of an organization:

Column Name Type Size

First_Name Text 40Last_Name Text 40Phone Text 30Email Text 40Date_Joined Date/TimeOfficer Yes/No 1

Chapter 10, Slide 9 Starting Out with Visual Basic 3rd Edition

Issues with Redundant Data Database design minimizes redundant data In the following employee table:

ID First_Name Last_Name Department001234 Ignacio Fleta Accounting002000 Christian Martin Computer Support002122 Orville Gibson Human Resources00300 Jose Ramirez Research & Devel003400 Ben Smith Accounting003780 Allison Chong Computer Support

Same dept name appears multiple times• Requires additional storage space• Causes problems if misspelled• What if a department needs to be renamed?

Chapter 10, Slide 10 Starting Out with Visual Basic 3rd Edition

Eliminating Redundant Data Create a department table

Dept_ID Dept_Name Num_Employees1 Human Resources 102 Accounting 53 Computer Support 304 Research & Development 15

Reference department table in employee tableID First_Name Last_Name Dept_ID001234 Ignacio Fleta 2002000 Christian Martin 3002122 Orville Gibson 1003000 Jose Ramirez 4003400 Ben Smith 2003780 Allison Chong 3

Chapter 10, Slide 11 Starting Out with Visual Basic 3rd Edition

One-to-Many Relationships

The previous changes created a one-to-many relationship• Every employee has one and only one dept• Every department has many employees• DeptID in department table is a primary key• DeptID in employee table is a foreign key

In general, a one-to-many relationship is created when the primary key of one table is specified as a field of a another table

Chapter 10, Slide 12 Starting Out with Visual Basic 3rd Edition

Section 10.2Using the DataGridView

The DataGridView Control Allows you to Display a Database Table in a Grid Which Can be Used at Runtime to Sort and Edit

the Contents of the Table

Chapter 10, Slide 13 Starting Out with Visual Basic 3rd Edition

Connecting VB to a Database

VB provides tools to display database tables Data binding links tables to form controls

• Controls called components establish the link• A wizard guides you through the process

We’ll use these data-related components:• Data source – usually a database• Binding source – holds database name,

location, and other connection information• Table adapter – uses SQL to select data• Dataset – in-memory copy of data from tables

Chapter 10, Slide 14 Starting Out with Visual Basic 3rd Edition

Connecting VB to a Database

The flow of data from database to application

• Note that data moves in both directions• Data travels from data source to application• Application can view/change dataset contents• Changes to dataset can be written back to

the data source Tutorial 10-1 demonstrates how to connect a

database table to a DataGridView control

DataSource

BindingSource

TableAdapter Dataset Application

Chapter 10, Slide 15 Starting Out with Visual Basic 3rd Edition

Section 10.3Selecting Dataset Rows

Visual Basic Provides Convenient Tools for Selecting Which Rows from the Dataset You Want to Display

Chapter 10, Slide 16 Starting Out with Visual Basic 3rd Edition

Structured Query Language (SQL)

Often need to select certain rows in a table using Structured Query Language (SQL)• Standard method of working with a database• Adopted by most all database software• Not a general purpose programming language• Defines how to construct queries that return

selected data from the database

Chapter 10, Slide 17 Starting Out with Visual Basic 3rd Edition

SQL Query Example

You might want to select all employees hired before 1998 and earning less than $45,000Select ID, Name, Full_Time, Hire_Date, SalaryFrom employeesWhere Hire_Date < 1/1/1998 and Salary < 45000

• Select, From, and Where are keywords• Fields to be returned listed after Select• Table containing the data listed after From• Conditions affecting row selection after Where

SQL query is a property of the TableAdapter

Chapter 10, Slide 18 Starting Out with Visual Basic 3rd Edition

Configuring the TableAdapter

Right-click on dataset and select Configure to start TableAdapter Configuration Wizard• Can modify a simple query directly in wizard• Or use Query Builder for more complex query

Query Builder is a tool to create or modify queries with minimal knowledge of SQL

To add a query to a DataGridView• Right-click Table Adapter icon attached to grid• Select Add Query from shortcut menu

Tutorial 10-2 demonstrates how this is done

Chapter 10, Slide 19 Starting Out with Visual Basic 3rd Edition

Section 10.4Data-Bound Controls

Some Controls Can Be Bound to a Dataset. A Data-bound Control Can be Used to Display and Edit the Contents of a

Particular Row and Co.lumn

Chapter 10, Slide 20 Starting Out with Visual Basic 3rd Edition

Chapter 10, Slide 21 Starting Out with Visual Basic 3rd Edition

Advantages of Data-Binding

Can add multiple data sources to a project Can bind fields in a data source to controls:

• Text boxes• Labels• List boxes

Contents of data-bound controls change automatically when moving from row to row

Updating the contents of a database field from a data-bound control is also very easy

Chapter 10, Slide 22 Starting Out with Visual Basic 3rd Edition

Binding Existing Dataset to DataGrid

Use the Data Sources window • Locate the dataset table• Drag table to an open area of a form• Creates a data grid bound to the data source

Automatically adds a navigation bar to form Set Dock property to Center Docking to make

the data grid fill the entire form

Chapter 10, Slide 23 Starting Out with Visual Basic 3rd Edition

Binding Individual Fields to Controls Use the Data Sources window

• Locate the dataset table• Select Details from the table drop-down list• Drag table to an open area of a form• Creates a separate control for each field• Can also drag columns individually

Adds automatic navigation bar as before Text and numeric fields added as text boxes Yes/No fields added as checkboxes May wish to change some control properties

Chapter 10, Slide 24 Starting Out with Visual Basic 3rd Edition

Binding to List and Combo Boxes

List and combo boxes are frequently used to supply a list of items for a user to select from

Such lists are often populated from a table Must set two list/combo box properties

• DataSource identifies a table within a dataset• DisplayMember identifes the table column to

be displayed in the list/combo box If table column dragged onto a list/combo box

• Visual Studio creates the required dataset, table adapter, and binding source components

Tutorial 10-3 shows this type of binding

Chapter 10, Slide 25 Starting Out with Visual Basic 3rd Edition

Adding New Rows to a Dataset NewRow method creates a new, empty row Assign values to columns in the empty row Add method appends new row to the dataset The following example adds a new row to the

Payments table of the dsPayments dataset

Dim row as dsPayments.PaymentsRowRow = CType(DsPayments.Payments.NewRow(), _

dsPayments.PaymentsRow)With rowrow.Member_ID = 5row.Payment_Date = #5/15/2006#row.Amount = 500D

End WithDsPayments.Payments.Rows.Add(row)

Chapter 10, Slide 26 Starting Out with Visual Basic 3rd Edition

Another Means to Add Dataset Rows

Can call the dataset Add method directly This approach is more straightforward but:

• Must specify values in correct column order• Previous example becomes far simpler:

DsPayments.Payments.Rows.Add( _Nothing, 5, #5/15/2006#, 500D)

Payments table 1st column is autonumber so:• Must have an argument for this column• Pass Nothing as the value for this column

Chapter 10, Slide 27 Starting Out with Visual Basic 3rd Edition

Removing a Row from a Dataset

Two steps to remove a row• Get a reference to the row to remove• Call Remove method on Rows collection

Following example calls FindByID with the primary key to get a reference to the row

Dim row as DataRow = _ DsPayments.Payments.FindByID(36)

DsPayments.Payments.Rows.Remove(row)

Chapter 10, Slide 28 Starting Out with Visual Basic 3rd Edition

Updating the Database

Previous add and remove examples change the dataset but not the underlying database

Must call TableAdapter Update method to save dataset changes to the database

To write changes in the DsPayments dataset to the underlying database:

PaymentsTableAdapter.Update(DsPayments)

Tutorial 10-4 demonstrates adding new rows to the Payments table

Chapter 10, Slide 29 Starting Out with Visual Basic 3rd Edition

Reading Dataset Rows with For-Each

A For-Each statement can be used to iterate over all rows of a dataset

Usually use a strongly typed dataset for this Sum Amount column of dsPayments dataset

Dim row as dsPayments.PaymentsRowDim decTotal as Decimal = 0For Each row in DsPayments.Payments.Rows

decTotal += row.AmountNext

Tutorial 10-5 demonstrates this technique

Chapter 10, Slide 30 Starting Out with Visual Basic 3rd Edition

Section 10.5Structured Query Language

(SQL)

SQL Is a Standard Language for Working With Databases

Chapter 10, Slide 31 Starting Out with Visual Basic 3rd Edition

The Select Statement

Select retrieves rows from one or more tables in a database• Basic form of Select for a single table is

Select column-listFrom table

• column-list contains column names to select from table, each separated by a comma

The following Select statement retrieves the ID and Salary fields from the SalesStaff tableSelect ID, SalaryFrom SalesStaff

Chapter 10, Slide 32 Starting Out with Visual Basic 3rd Edition

Column Names

Use asterisk to select all columns in a table Select *From SalesStaff

Unlike VB names, SQL columns can have embedded spaces• If so, use square brackets around column names

Select [Last Name], [First Name]From SalesStaff

• Better to avoid embedded spaces for this reason As operator can be used to rename columns

Select Last_Name, Hire_Date As Date_HiredFrom SalesStaff

Chapter 10, Slide 33 Starting Out with Visual Basic 3rd Edition

Creating New Columns Sometimes useful to create a new column by

appending existing columns together• Create a Full_Name field from first and last name

Select Last_Name + ‘, ‘ + First_Name as Full_NameFrom SalesStaff

• Creates a Full_Name field in the format last, first

Can also be useful to create a new column by performing arithmetic operations• Columns involved must be numeric

Select ID, hrsWorked * hourlyRate As payAmountFrom Payroll

• Creates a payAmount column with gross pay

Chapter 10, Slide 34 Starting Out with Visual Basic 3rd Edition

Sorting Rows with Order By Clause

SQL Select has an optional Order By clause that affects the order in which rows appear

Order by Last_Name, First_Name

• Displays rows in order by last name, then first

• Sort in reverse order (high to low) using DescOrder by Last_Name DESC

Order By clause appears after From clauseSelect First_Name, Last_Name, Date_JoinedFrom MembersOrder By Last_Name, First_Name

• Lists all members by last name, then first

Chapter 10, Slide 35 Starting Out with Visual Basic 3rd Edition

Selecting Rows with Where Clause

SQL Select has an optional Where clause that can be used to select (or filter) certain rows

Where Last_Name = ‘Gomez’

• Displays only rows where last name is Gomez

• Must be a defined column (in table or created)

This example selects based on a created field

Select Last_Name, hrsWorked * Rate As payAmountFrom PayrollWhere payAmount > 1000Order by Last_Name

• Selects those being paid more than $1,000

Chapter 10, Slide 36 Starting Out with Visual Basic 3rd Edition

SQL Relational Operators SQL Where uses relational operators just like a VB If

Operator Meaning= equal to

<> not equal to< less than

<= less than or equal to> greater than

>= greater than or equal toBetween between two values (inclusive)

Like similar to (match using wildcard)

Example of Between operator: Where Hire_Date Between #1/1/1992# and #12/31/1999#

Example of Like operator with % sign as wildcard: Where Last_Name Like ‘A%’

Chapter 10, Slide 37 Starting Out with Visual Basic 3rd Edition

Compound Expressions

SQL uses And, Or, and Not to create compound expressions

Select all employees hired after 1/1/1990 and with a salary is greater than $40,000Where (Hire_Date > #1/1/1990#) and (Salary > 40000)

Select all employees hired after 1/1/1990 or with a salary is greater than $40,000Where (Hire_Date > #1/1/1990#) or (Salary > 40000)

Select employee names not beginning with AWhere Last_Name Not Like ‘A%’

Chapter 10, Slide 38 Starting Out with Visual Basic 3rd Edition

Section 10.6Karate School

Management Application

Create an Application that Works With theKarate School Database