utpa – fall 2011

35
CSCI 3327 Visual Basic CSCI 3327 Visual Basic Chapter 13: Databases Chapter 13: Databases and LINQ and LINQ UTPA – Fall 2011

Upload: selima

Post on 01-Feb-2016

28 views

Category:

Documents


0 download

DESCRIPTION

CSCI 3327 Visual Basic Chapter 13: Databases and LINQ. UTPA – Fall 2011. Objectives. In this chapter, you will Learn the relational database model Get familiar with using LINQ to retrieve and manipulate data from a database - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: UTPA – Fall 2011

CSCI 3327 Visual Basic CSCI 3327 Visual Basic Chapter 13: Databases and LINQChapter 13: Databases and LINQ

UTPA – Fall 2011

Page 2: UTPA – Fall 2011

Objectives

• In this chapter, you will– Learn the relational database model– Get familiar with using LINQ to retrieve and

manipulate data from a database– Know how to add data sources to project, create

LINQ to SQL classes, and use data binding to move data between GUI controls and databases

– Learn how to create Master/Detail views to select a record and display its details

2

Page 3: UTPA – Fall 2011

Introduction

• A database is an organized collection of data• A database management system (DBMS)

provides mechanisms for storing, organizing, retrieving and modifying data

• Existing DBMSs– Microsoft SQL Server– Oracle– Sybase– IBM DB2

3

Page 4: UTPA – Fall 2011

Introduction (cont'd)

• PostgreSQL and MySQL are popular open-source DBMSs that can be downloaded and used freely by anyone

• In this class, we use Microsoft’s free SQL Server Express, which is installed with Visual Basic Express and Visual Studio

• It can also be downloaded separately from Microsoft (www.microsoft.com/express/sql)

4

Page 5: UTPA – Fall 2011

Relational Database

• A relational database organizes data simply in tables– rows (also called records)– columns (also called fields, attributes)

• Primary key: a column (or group of columns) requiring a unique value that cannot be duplicated in other rows

• A primary key composed of two or more columns is known as a composite key

• Foreign key—a column in this table that matches the primary-key column in another table

5

Page 6: UTPA – Fall 2011

Example of Table: Employees

6

Page 7: UTPA – Fall 2011

SQL

• A program might select data from the table to create a query result – E.g., to retrieve the location of each department, in

increasing order by Department number– SQL:

• Select distinct Department, Location

From Employees

Order By Department

7

Page 8: UTPA – Fall 2011

SQL Results

8

Page 9: UTPA – Fall 2011

Schema

• A database’s tables, their fields and the relationships among them are collectively known as a database schema

• In SQL Server, database files have the .mdf (“master data file”) file-name extension– Books.mdf

9

Page 10: UTPA – Fall 2011

Books Database

• Books database consists of 3 tables– Authors– Titles– AuthorISBN

10

Page 11: UTPA – Fall 2011

Authors

11

Page 12: UTPA – Fall 2011

Titles

12

Page 13: UTPA – Fall 2011

AuthorISBN

13

Page 14: UTPA – Fall 2011

Entity-Relationship Model

• Entity-Relationship (ER) model– Entity

• Authors

• Titles

– Relationship• There is a one-to-many relationship between a primary

key and a corresponding foreign key– E.g., one author can write many books and one book can be

written by many authors

• Others: many-to-many or one-to-one relationship

• E.g., AuthorISBN14

Page 15: UTPA – Fall 2011

Example of ER Diagram

15

Books database

Page 16: UTPA – Fall 2011

Querying a Database with LINQ

• Connect to the Books database• Create the LINQ to SQL classes required to

use the database• Add the Authors table as a data source• Drag the Authors table data source onto the

Design view to create a GUI for displaying the table’s data

• Add a few statements to the program to allow it to interact with the database

16

Page 17: UTPA – Fall 2011

GUI To Display Authors Table

17

Page 18: UTPA – Fall 2011

Creating LINQ to SQL Classes

• Step 1: Creating the Project– Create a new Windows Forms Application named

DisplayTable– Change the name of the source file to

DisplayAuthorsTable.vb– The IDE updates the Form’s class name to match

the source file– Set the Form’s Text property to Display Authors

Table

18

Page 19: UTPA – Fall 2011

Creating LINQ to SQL Classes (cont'd)

• Step 2: Adding a Database to the Project and Connecting to the Database– To interact with a database, you must create a connection

to the database.– In Visual Basic 2010 Express, select View > Other

Windows > Database Explorer to display the Database Explorer window

• For a full version of Visual Studio, select View > Server Explorer to display the Server Explorer

– Click the Connect to Database icon at the top of the Database Explorer

• In Choose Data Source dialog, select Microsoft SQL Server Database File from the Data source: list

• Always use this selection CheckBox, the IDE will use this type of database file by default when you connect to databases Click Continue to display the Add Connection dialog

19

Page 20: UTPA – Fall 2011

Choose Data Source Dialog

20

Page 21: UTPA – Fall 2011

Creating LINQ to SQL Classes (cont'd)

• In the Add Connection dialog– click the Change… Button to select a database– click Browse… to locate and select the Books.mdf

file in the Databases directory– click Test Connection to verify that the IDE can

connect to the database through SQL Server Express

– click OK to create the connection

21

Page 22: UTPA – Fall 2011

Add Connection Dialog

22

Page 23: UTPA – Fall 2011

Creating LINQ to SQL Classes (cont'd)

• Step 3: Generating the LINQ to SQL classes– Select the database from which the LINQ to SQL

classes will be created– LINQ to SQL uses the database’s schema to help

define the classes– Right click the project name in the Solution

Explorer and select Add > New Item… to display the Add New Item dialog

• Select the LINQ to SQL Classes template, name the new item Books.dbml and click the Add button

– The Object Relational Designer window will appear• Double click the Books.dbml file in the Solution

Explorer to open the Object Relational Designer23

Page 24: UTPA – Fall 2011

Object Relational Designer

24

Page 25: UTPA – Fall 2011

Creating LINQ to SQL Classes (cont'd)

• Expand the Books.mdf database node in the Database Explorer

• Expand the Tables node• Drag the Authors, Titles and AuthorISBN tables

onto the Object Relational Designer• The IDE prompts whether you want to copy the

database to the project directory• Select Yes

– The Object Relational Designer will display the tables that you dragged from the Database Explorer

• Save the Books.dbml file25

Page 26: UTPA – Fall 2011

Data Bindings Between Controls and the LINQ to SQL Classes

• Step 1: Adding the Author LINQ to SQL Class as a Data Source

• To use the LINQ to SQL classes for data binding, you must first add them as a data source.– Select Data > Add New Data Source… to display the Data Source

Configuration Wizard.

– The LINQ to SQL classes are used to create objects representing the tables in the database, so we’ll use an Object data source. In the dialog, select Object and click Next >. Expand the tree view and ensure that Author is checked. An object of this class will be used as the data source

– Click Finish26

Page 27: UTPA – Fall 2011

27

Page 28: UTPA – Fall 2011

Data Bindings Between Controls and the LINQ to SQL Classes

(cont'd)• The Authors table in the database is now a

data source that can be used by the bindings

• Open the Data Sources window by selecting Data > Show Data Sources.

28

Page 29: UTPA – Fall 2011

Data Bindings Between Controls and the LINQ to SQL Classes (cont'd)

• Step 2: Creating GUI Elements– Use the Design view to create a GUI control that can

display the Authors table’s data• Switch to Design view for the DisplayAuthorsTable class

• Click the Author node in the Data Sources window—it should change to a drop-down list.

– Open the drop-down by clicking the down arrow – Select DataGridView option—this is the GUI control that will be

used to display and interact with the data.

• Drag the Author node from the Data Sources window onto the Form in Design view

29

Page 30: UTPA – Fall 2011

Data Bindings Between Controls and the LINQ to SQL Classes (cont'd)

• To make the DataGridView occupy the entire window– select the DataGridView

– use the Properties window to set the Dock property to Fill

30

Page 31: UTPA – Fall 2011

Data Bindings Between Controls and the LINQ to SQL Classes (cont'd)

• Step 3: Connecting the BooksDataContext to the AuthorBindingSource– The final step is to connect the

BooksDataContext to the AuthorBindingSource, so that the application can interact with the database

– Obtain data from the database and to save any changes that the user makes to the data back into the database (see next slide)

31

Page 32: UTPA – Fall 2011

32

Page 33: UTPA – Fall 2011

Data Bindings Between Controls and the LINQ to SQL Classes (cont'd)

• Step 4: Saving Modifications Back to the Database– If the user modifies the data in the DataGridView,

we’d also like to save the modifications in the database– By default, the BindingNavigator’s Save Data Button

is disabled– To enable it, right click this Button’s icon and select

Enabled– Then, double click the icon to create its Click event

handler– Saving the data entered into the DataGridView back to

the database is a three-step process (lines 22–24)33

Page 34: UTPA – Fall 2011

34

Page 35: UTPA – Fall 2011

35