Csphtp1 19

74
2002 Prentice Hall. All rights reserved. 1 Chapter 19 – Database, SQL, and ADO .NET Outline 19.1 Introduction 19.2 Relational Database Model 19.3 Relational Database Overview: Books Database 19.4 Structured Query Language (SQL) 19.4.1 Basic SELECT Query 19.4.2 WHERE Clause 19.4.3 ORDER BY Clause 19.4.4 Merging Data from Multiple Tables: INNER JOIN 19.4.5 Joining Data from Tables Authors, AuthorISBN, Titles and Publishers 19.4.6 INSERT Statement 19.4.7 UPDATE Statement 19.4.8 DELETE Statement

description

C# how to programing

Transcript of Csphtp1 19

Page 1: Csphtp1 19

2002 Prentice Hall. All rights reserved.

1

Chapter 19 – Database, SQL, and ADO .NET

Outline19.1 Introduction19.2 Relational Database Model19.3 Relational Database Overview: Books Database19.4 Structured Query Language (SQL)

19.4.1 Basic SELECT Query19.4.2 WHERE Clause19.4.3 ORDER BY Clause19.4.4 Merging Data from Multiple Tables: INNER JOIN19.4.5 Joining Data from Tables Authors, AuthorISBN,

Titles and Publishers19.4.6 INSERT Statement19.4.7 UPDATE Statement19.4.8 DELETE Statement

Page 2: Csphtp1 19

2002 Prentice Hall. All rights reserved.

2

Chapter 19 – Database, SQL, and ADO .NET

Outline19.5 ADO .NET Object Model19.6 Programming with ADO .NET: Extracting

Information from a DBMS19.6.1 Connecting to and Querying an Access Data Source19.6.2 Querying the Books Database

19.7 Programming with ADO.NET: Modifying a DBMS19.8 Reading and Writing XML Files

Page 3: Csphtp1 19

2002 Prentice Hall. All rights reserved.

3

19.1 Introduction

• Database:– Integrated collection of data

– Database management system (DBMS)• Provides mechanisms for storing and organizing data in a way

that is consistent with database’s format

• Allows storage and access to database without knowledge of internal representation

– Relational Databases most popular• Use Structured Query Language to perform queries (search)

and manipulate data

• Programming languages need an interface to interact with relational databases

Page 4: Csphtp1 19

2002 Prentice Hall. All rights reserved.

4

19.2 Relational Database Model

• Logical representation of data:– Relationships can be considered without concern for

physical structure of data

• Composed of tables– Rows called records

– Columns called fields

– Primary key: field that contains unique data• Each record can be identified by at least one distinct value

– New sets made from queries called result sets

Page 5: Csphtp1 19

2002 Prentice Hall. All rights reserved.

5

19.2 Relational Database Model

Fig. 19.1 Relational-database structure of an Employee table.

number name department salary location

23603 Jones 413 1100 New Jersey

24568 Kerwin 413 2000 New Jersey

34589 Larson 642 1800 Los Angeles

35761 Myers 611 1400 Orlando

47132 Neumann 413 9000 New Jersey

78321 Stephens 611 8500 Orlando

record/row

field/columnprimary key

Page 6: Csphtp1 19

2002 Prentice Hall. All rights reserved.

6

19.3 Relational Database Overview: Books Database

• Rule of Entity Integrity: every record must have a unique value in its primary-key field

• Compound Primary key: when a record has a unique key based on a combination of two fields

• Foreign key:– Field for which every entry has a unique value in another

table and where the field in the other table is the primary key for that table

– Rule of Referential Integrity: every foreign-key field value must appear in another table’s primary-key field

– One to many relationship: A foreign key can appear many times in its own table, but only once as primary key in another table

Page 7: Csphtp1 19

2002 Prentice Hall. All rights reserved.

7

19.3 Relational Database Overview: Books Database

Fig. 19.2 Result set formed by selecting Department and Location data from the Employee table.

department location

413 New Jersey

642 Los Angeles

611 Orlando

Page 8: Csphtp1 19

2002 Prentice Hall. All rights reserved.

8

19.3 Relational Database Overview: Books Database

Field Description authorID Author’s ID number in the database. In the Books database, this int field is

defined as an auto-incremented field. For each new record inserted in this table, the database increments the authorID value, ensuring that each record has a unique authorID. This field represents the table’s primary key.

firstName Author’s first name (a string).

lastName Author’s last name (a string).

Fig. 19.3 Authors table from Books.

Page 9: Csphtp1 19

2002 Prentice Hall. All rights reserved.

9

19.3 Relational Database Overview: Books Database

authorID firstName lastName 1 Harvey Deitel

2 Paul Deitel

3 Tem Nieto

4 Kate Steinbuhler

5 Sean Santry

6 Ted Lin

7 Praveen Sadhu

8 David McPhie

9 Cheryl Yaeger

10 Marina Zlatkina

11 Ben Wiedermann

12 Jonathan Liperi

13 Jeffrey Listfield

Fig. 19.4 Data from the Authors table of Books.

Page 10: Csphtp1 19

2002 Prentice Hall. All rights reserved.

10

19.3 Relational Database Overview: Books Database

Field Description publisherID The publisher’s ID number in the database. This auto-incremented int

field is the table’s primary-key field.

publisherName The name of the publisher (a string).

Fig. 19.5 Publishers table from Books.

publisherID publisherName 1 Prentice Hall

2 Prentice Hall PTG

Fig. 19.6 Data from the Publishers table of Books.

Field Description authorID The author’s ID number, which allows the database to associate each

book with a specific author. The integer ID number in this field must also appear in the Authors table.

isbn The ISBN number for a book (a string).

Fig. 19.7 AuthorISBN table from Books.

Page 11: Csphtp1 19

2002 Prentice Hall. All rights reserved.

11

19.3 Relational Database Overview: Books Database

authorID isbn authorID isbn 1 0130895725 2 0139163050

1 0132261197 2 013028419x

1 0130895717 2 0130161438

1 0135289106 2 0130856118

1 0139163050 2 0130125075

1 013028419x 2 0138993947

1 0130161438 2 0130852473

1 0130856118 2 0130829277

1 0130125075 2 0134569555

1 0138993947 2 0130829293

1 0130852473 2 0130284173

1 0130829277 2 0130284181

1 0134569555 2 0130895601

1 0130829293 3 013028419x

1 0130284173 3 0130161438

1 0130284181 3 0130856118

1 0130895601 3 0134569555

2 0130895725 3 0130829293

2 0132261197 3 0130284173

2 0130895717 3 0130284181

2 0135289106 4 0130895601

Fig. 19.8 Data from AuthorISBN table in Books.

Page 12: Csphtp1 19

2002 Prentice Hall. All rights reserved.

12

19.3 Relational Database Overview: Books Database

Field Description isbn ISBN number of the book (a string).

title Title of the book (a string).

editionNumber Edition number of the book (a string).

copyright Copyright year of the book (an int).

publisherID Publisher’s ID number (an int). This value must correspond to an ID number in the Publishers table.

imageFile Name of the file containing the book’s cover image (a string).

price Suggested retail price of the book (a real number). [Note: The prices shown in this database are for example purposes only.]

Fig. 19.9 Titles table from Books.

Page 13: Csphtp1 19

2002 Prentice Hall. All rights reserved.

13

19.3 Relational Database Overview: Books Database

isbn title edition-Number

publish- erID

copy-right

imageFile price

0130923613 Python How to Program

1 1 2002 python.jpg $69.95

0130622214 C# How to Program

1 1 2002 cshtp.jpg $69.95

0130341517 Java How to Program

4 1 2002 jhtp4.jpg $69.95

0130649341 The Complete Java Training Course

4 2 2002 javactc4.jpg $109.95

0130895601 Advanced Java 2 Platform How to Program

1 1 2002 advjhtp1.jpg $69.95

0130308978 Internet and World Wide Web How to Program

2 1 2002 iw3htp2.jpg $69.95

0130293636 Visual Basic .NET How to Program

2 1 2002 vbnet.jpg $69.95

0130895636 The Complete C++ Training Course

3 2 2001 cppctc3.jpg $109.95

0130895512 The Complete e-Business & e-Commerce Programming Training Course

1 2 2001 ebecctc.jpg $109.95

013089561X The Complete Internet & World Wide Web Programming Training Course

2 2 2001 iw3ctc2.jpg $109.95

0130895547 The Complete Perl Training Course

1 2 2001 perl.jpg $109.95

0130895563 The Complete XML Programming Training Course

1 2 2001 xmlctc.jpg $109.95

Fig. 19.10 part 1

Page 14: Csphtp1 19

2002 Prentice Hall. All rights reserved.

14

19.3 Relational Database Overview: Books Database

0130895725 C How to Program 3 1 2001 chtp3.jpg $69.95

0130895717 C++ How to Program

3 1 2001 cpphtp3.jpg $69.95

013028419X e-Business and e-Commerce How to Program

1 1 2001 ebechtp1.jpg $69.95

0130622265 Wireless Internet and Mobile Business How to Program

1 1 2001 wireless.jpg $69.95

0130284181 Perl How to Program

1 1 2001 perlhtp1.jpg $69.95

0130284173 XML How to Program

1 1 2001 xmlhtp1.jpg $69.95

0130856118 The Complete Internet and World Wide Web Programming Training Course

1 2 2000 iw3ctc1.jpg $109.95

0130125075 Java How to Program (Java 2)

3 1 2000 jhtp3.jpg $69.95

0130852481 The Complete Java 2 Training Course

3 2 2000 javactc3.jpg $109.95

0130323640 e-Business and e-Commerce for Managers

1 1 2000 ebecm.jpg $69.95

0130161438 Internet and World Wide Web How to Program

1 1 2000 iw3htp1.jpg $69.95

0130132497 Getting Started with Visual C++ 6 with an Introduction to MFC

1 1 1999 gsvc.jpg $49.95

Fig. 19.10 part 2

Page 15: Csphtp1 19

2002 Prentice Hall. All rights reserved.

15

19.3 Relational Database Overview: Books Database

0130829293 The Complete Visual Basic 6 Training Course

1 2 1999 vbctc1.jpg $109.95

0134569555 Visual Basic 6 How to Program

1 1 1999 vbhtp1.jpg $69.95

0132719746 Java Multimedia Cyber Classroom

1 2 1998 javactc.jpg $109.95

0136325890 Java How to Program

1 1 1998 jhtp1.jpg $69.95

0139163050 The Complete C++ Training Course

2 2 1998 cppctc2.jpg $109.95

0135289106 C++ How to Program

2 1 1998 cpphtp2.jpg $49.95

0137905696 The Complete Java Training Course

2 2 1998 javactc2.jpg $109.95

0130829277 The Complete Java Training Course (Java 1.1)

2 2 1998 javactc2.jpg $99.95

0138993947 Java How to Program (Java 1.1)

2 1 1998 jhtp2.jpg $49.95

0131173340 C++ How to Program

1 1 1994 cpphtp1.jpg $69.95

0132261197 C How to Program 2 1 1994 chtp2.jpg $49.95

0131180436 C How to Program 1 1 1992 chtp.jpg $69.95

Fig. 19.10 Data from the Titles table of Books.

Fig. 19.10 part 3

Page 16: Csphtp1 19

2002 Prentice Hall. All rights reserved.

16

19.3 Relational Database Overview: Books Database

Fig. 19.11 Table relationships in Books.

AuthorISBN

authorID

isbn

AuthorsauthorID

firstNamelastName

Publishers

publisherID

publisherName

Titles

isbn

titleeditionNumber

copyright

publisherIDimageFile

price

1

1

1

Page 17: Csphtp1 19

2002 Prentice Hall. All rights reserved.

17

19.4 Structured Query Language (SQL)

• Used to request data (perform queries) and manipulate data

Page 18: Csphtp1 19

2002 Prentice Hall. All rights reserved.

18

19.4 Structured Query Language (SQL)

SQL keyword Description SELECT Selects (retrieves) fields from one or more tables.

FROM Specifies tables from which to get fields or delete records. Required in every SELECT and DELETE statement.

WHERE Specifies criteria that determine the rows to be retrieved.

INNER JOIN Joins records from multiple tables to produce a single set of records.

GROUP BY Specifies criteria for grouping records.

ORDER BY Specifies criteria for ordering records.

INSERT Inserts data into a specified table.

UPDATE Updates data in a specified table.

DELETE Deletes data from a specified table.

Fig. 19.12 SQL query keywords.

Page 19: Csphtp1 19

2002 Prentice Hall. All rights reserved.

19

19.4.1Basic Select Query

• Extracts information from one or more tables in a database

• Format:– Basic: SELECT * FROM tableName

– Example: SELECT * FROM Authors

– * extracts all columns

– To get specific fields use a comma separated list instead of *

Page 20: Csphtp1 19

2002 Prentice Hall. All rights reserved.

20

19.4.1 Basic Select Query

authorID lastName authorID lastName 1 Deitel 8 McPhie

2 Deitel 9 Yaeger

3 Nieto 10 Zlatkina

4 Steinbuhler 12 Wiedermann

5 Santry 12 Liperi

6 Lin 13 Listfield

7 Sadhu

Fig. 19.13 authorID and lastName from the Authors table.

Page 21: Csphtp1 19

2002 Prentice Hall. All rights reserved.

21

19.4.2 Where Clause

• Used to specify certain criteria in a query• Basic form:

– SELECT * FROM tableName WHERE criteria

• Example:– SELECT * FROM Titles WHERE copyright > 1999

• Can use LIKE clause– Used for pattern matching

• Uses wildcards

– *: zero or more characters take its place

– ?: exactly one character takes its place

Page 22: Csphtp1 19

2002 Prentice Hall. All rights reserved.

22

19.4.2 WHERE ClauseTitle editionNumber copyright Internet and World Wide Web How to Program 2 2002

Java How to Program 4 2002

The Complete Java Training Course 4 2002

The Complete e-Business & e-Commerce Programming Training Course

1 2001

The Complete Internet & World Wide Web Programming Training Course

2 2001

The Complete Perl Training Course 1 2001

The Complete XML Programming Training Course 1 2001

C How to Program 3 2001

C++ How to Program 3 2001

The Complete C++ Training Course 3 2001

e-Business and e-Commerce How to Program 1 2001

Internet and World Wide Web How to Program 1 2000

The Complete Internet and World Wide Web Programming Training Course

1 2000

Java How to Program (Java 2) 3 2000

The Complete Java 2 Training Course 3 2000

XML How to Program 1 2001

Perl How to Program 1 2001

Advanced Java 2 Platform How to Program 1 2002

e-Business and e-Commerce for Managers 1 2000

Wireless Internet and Mobile Business How to Program 1 2001

C# How To Program 1 2002

Python How to Program 1 2002

Visual Basic .NET How to Program 2 2002

Fig. 19.14 Titles with copyrights after 1999 from table Titles.

Page 23: Csphtp1 19

2002 Prentice Hall. All rights reserved.

23

19.4.2 WHERE Clause

authorID firstName lastName 1 Harvey Deitel

2 Paul Deitel

Fig. 19.15 Authors from the Authors table whose last names start with D.

authorID firstName lastName 3 Tem Nieto

6 Ted Lin

11 Ben Wiedermann

12 Jonathan Liperi

13 Jeffrey Listfield

Fig. 19.16 Authors from table Authors whose last names contain i as the second letter.

Page 24: Csphtp1 19

2002 Prentice Hall. All rights reserved.

24

19.4.3 ORDER BY Clause

• Used to arrange results of a query– Can be ascending or descending order

• Uses ASC and DESC respectively

• Example:– SELECT authorID FROM Authors ORDER BY authorID ASC

• Can be used to sort by multiple fields

Page 25: Csphtp1 19

2002 Prentice Hall. All rights reserved.

25

19.4.3 ORDER BY ClauseauthorID firstName lastName 2 Paul Deitel

1 Harvey Deitel

6 Ted Lin

12 Jonathan Liperi

13 Jeffrey Listfield

8 David McPhie

3 Tem Nieto

7 Praveen Sadhu

5 Sean Santry

4 Kate Steinbuhler

11 Ben Wiedermann

9 Cheryl Yaeger

10 Marina Zlatkina

Fig. 19.17 Authors from table Authors in ascending order by lastName.

Page 26: Csphtp1 19

2002 Prentice Hall. All rights reserved.

26

19.4.3 ORDER BY ClauseauthorID firstName lastName 10 Marina Zlatkina

9 Cheryl Yaeger

11 Ben Wiedermann

4 Kate Steinbuhler

5 Sean Santry

7 Praveen Sadhu

3 Tem Nieto

8 David McPhie

13 Jeffrey Listfield

12 Jonathan Liperi

6 Ted Lin

2 Paul Deitel

1 Harvey Deitel

Fig. 19.18 Authors from table Authors in descending order by lastName.

Page 27: Csphtp1 19

2002 Prentice Hall. All rights reserved.

27

19.4.3 ORDER BY ClauseauthorID firstName lastName 1 Harvey Deitel

2 Paul Deitel

6 Ted Lin

12 Jonathan Liperi

13 Jeffrey Listfield

8 David McPhie

3 Tem Nieto

7 Praveen Sadhu

5 Sean Santry

4 Kate Steinbuhler

11 Ben Wiedermann

9 Cheryl Yaeger

10 Marina Zlatkina

Fig. 19.19 Authors from table Authors in ascending order by lastName and by firstName.

Page 28: Csphtp1 19

2002 Prentice Hall. All rights reserved.

28

19.4.3 ORDER BY Clauseisbn title edition-

Number copy-right

price

0130895601 Advanced Java 2 Platform How to Program

1 2002 $69.95

0131180436 C How to Program 1 1992 $69.95

0130895725 C How to Program 3 2001 $69.95

0132261197 C How to Program 2 1994 $49.95

0130622214 C# How To Program 1 2002 $69.95

0135289106 C++ How to Program 2 1998 $49.95

0131173340 C++ How to Program 1 1994 $69.95

0130895717 C++ How to Program 3 2001 $69.95

013028419X e-Business and e-Commerce How to Program

1 2001 $69.95

0130308978 Internet and World Wide Web How to Program

2 2002 $69.95

0130161438 Internet and World Wide Web How to Program

1 2000 $69.95

0130341517 Java How to Program 4 2002 $69.95

0136325890 Java How to Program 1 1998 $49.95

0130284181 Perl How to Program 1 2001 $69.95

0130923613 Python How to Program 1 2002 $69.95

0130293636 Visual Basic .NET How to Program

2 2002 $69.95

0134569555 Visual Basic 6 How to Program

1 1999 $69.95

0130622265 Wireless Internet and Mobile Business How to Program

1 2001 $69.95

0130284173 XML How to Program 1 2001 $69.95

Fig. 19.20 Books from table Titles whose titles end with How to Program in ascending order by title.

Page 29: Csphtp1 19

2002 Prentice Hall. All rights reserved.

29

19.4.4 Merging Data from Multiple Tables: INNER JOIN

• INNER JOIN – Merges records from multiple tables into a single record

– Tests for matching values in a common field

– General Form: SELECT * FROM table1 INNER JOIN table2 ON table1.fieldName=table2.fieldName

– Example: SELECT firstName, isbn FROM Authors INNER JOIN AuthorISBN ON Authors.authorID= AuthorISBN.authorID

• Fully-qualified names use the table name and dot operator followed by the field name

Page 30: Csphtp1 19

2002 Prentice Hall. All rights reserved.

30

19.4.4 Merging Data from Multiple Tables: INNER JOIN

firstName lastName isbn firstName lastName isbn Harvey Deitel 0130895601 Harvey Deitel 0130829293

Harvey Deitel 0130284181 Harvey Deitel 0134569555

Harvey Deitel 0130284173 Harvey Deitel 0130829277

Harvey Deitel 0130852473 Paul Deitel 0130125075

Harvey Deitel 0138993947 Paul Deitel 0130856118

Harvey Deitel 0130856118 Paul Deitel 0130161438

Harvey Deitel 0130161438 Paul Deitel 013028419x

Harvey Deitel 013028419x Paul Deitel 0139163050

Harvey Deitel 0139163050 Paul Deitel 0130895601

Harvey Deitel 0135289106 Paul Deitel 0135289106

Harvey Deitel 0130895717 Paul Deitel 0130895717

Harvey Deitel 0132261197 Paul Deitel 0132261197

Harvey Deitel 0130895725 Paul Deitel 0130895725

Harvey Deitel 0130125075 Tem Nieto 0130284181

Paul Deitel 0130284181 Tem Nieto 0130284173

Paul Deitel 0130284173 Tem Nieto 0130829293

Paul Deitel 0130829293 Tem Nieto 0134569555

Paul Deitel 0134569555 Tem Nieto 0130856118

Paul Deitel 0130829277 Tem Nieto 0130161438

Paul Deitel 0130852473 Tem Nieto 013028419x

Paul Deitel 0138993947

Fig. 19.21 Authors from table Authors and ISBN numbers of the authors’ books, sorted in ascending order by lastName and firstName.

Page 31: Csphtp1 19

2002 Prentice Hall. All rights reserved.

3119.4.5 Joining Data from Tables Authors, AuthorISBN, Titles and

Publishers• Tables produced by INNER JOIN can be used as

arguments for another INNER JOIN

Page 32: Csphtp1 19

2002 Prentice Hall. All rights reserved.

3219.4.5 Joining Data from Tables Authors, AuthorISBN, Titles and

Publishers

1 SELECT Titles.title, Titles.isbn, Authors.firstName, 2 Authors.lastName, Titles.copyright, 3 Publishers.publisherName4 FROM5 ( Publishers INNER JOIN Titles 6 ON Publishers.publisherID = Titles.publisherID ) 7 INNER JOIN8 ( Authors INNER JOIN AuthorISBN 9 ON Authors.authorID = AuthorISBN.authorID ) 10 ON Titles.isbn = AuthorISBN.isbn11 ORDER BY Titles.title

Fig. 19.22 TitleAuthor query of Books database.

Join Publishers and Titles tables if the publisherID matches

Join Authors and AuthorISBN if authorID matches

Join two created tables if titlesISBN matches authorsISBN

Sort new table by title

Page 33: Csphtp1 19

2002 Prentice Hall. All rights reserved.

3319.4.5 Joining Data from Tables Authors, AuthorISBN, Titles and

PublishersTitle isbn first-

Name last-Name

copy-right

publisher-Name

Advanced Java 2 Platform How to Program

0130895601 Paul Deitel 2002 Prentice Hall

Advanced Java 2 Platform How to Program

0130895601 Harvey Deitel 2002 Prentice Hall

Advanced Java 2 Platform How to Program

0130895601 Sean Santry 2002 Prentice Hall

C How to Program 0131180436 Harvey Deitel 1992 Prentice Hall

C How to Program 0131180436 Paul Deitel 1992 Prentice Hall

C How to Program 0132261197 Harvey Deitel 1994 Prentice Hall

C How to Program 0132261197 Paul Deitel 1994 Prentice Hall

C How to Program 0130895725 Harvey Deitel 2001 Prentice Hall

C How to Program 0130895725 Paul Deitel 2001 Prentice Hall

C# How To Program 0130622214 Tem Nieto 2002 Prentice Hall

C# How To Program 0130622214 Paul Deitel 2002 Prentice Hall

C# How To Program 0130622214 Jeffrey Listfield 2002 Prentice Hall

C# How To Program 0130622214 Cheryl Yaeger 2002 Prentice Hall

C# How To Program 0130622214 Marina Zlatkina 2002 Prentice Hall

C# How To Program 0130622214 Harvey Deitel 2002 Prentice Hall

C++ How to Program 0130895717 Paul Deitel 2001 Prentice Hall

Fig. 19.23 part 1

Page 34: Csphtp1 19

2002 Prentice Hall. All rights reserved.

3419.4.5 Joining Data from Tables Authors, AuthorISBN, Titles and

PublishersC++ How to Program 0130895717 Harvey Deitel 2001 Prentice Hall

C++ How to Program 0131173340 Paul Deitel 1994 Prentice Hall

C++ How to Program 0131173340 Harvey Deitel 1994 Prentice Hall

C++ How to Program 0135289106 Harvey Deitel 1998 Prentice Hall

C++ How to Program 0135289106 Paul Deitel 1998 Prentice Hall

e-Business and e-Commerce for Managers

0130323640 Harvey Deitel 2000 Prentice Hall

e-Business and e-Commerce for Managers

0130323640 Kate Steinbuhler

2000 Prentice Hall

e-Business and e-Commerce for Managers

0130323640 Paul Deitel 2000 Prentice Hall

e-Business and e-Commerce How to Program

013028419X Harvey Deitel 2001 Prentice Hall

e-Business and e-Commerce How to Program

013028419X Paul Deitel 2001 Prentice Hall

e-Business and e-Commerce How to Program

013028419X Tem Nieto 2001 Prentice Hall

Fig. 19.23 Portion of the result set produced by the query in Fig. 19.22.

Fig. 19.23 part 2

Page 35: Csphtp1 19

2002 Prentice Hall. All rights reserved.

35

19.4.6 Insert Statement

• Inserts a new record into a table• Form: INSERT INTO tableName(fieldName1) VALUES (value1)

• Values must match field names in order and type

Page 36: Csphtp1 19

2002 Prentice Hall. All rights reserved.

36

19.4.6 INSERT Statement

authorID firstName lastName 1 Harvey Deitel

2 Paul Deitel

3 Tem Nieto

4 Kate Steinbuhler

5 Sean Santry

6 Ted Lin

7 Praveen Sadhu

8 David McPhie

9 Cheryl Yaeger

10 Marina Zlatkina

11 Ben Wiedermann

12 Jonathan Liperi

13 Jeffrey Listfield

14 Sue Smith

Fig. 19.24 Authors after an INSERT operation to add a record.

Page 37: Csphtp1 19

2002 Prentice Hall. All rights reserved.

37

19.4.7 UPDATE Statement

• Modifies data in a table• Form: UPDATE tableName SET fieldName1 =

value1 WHERE criteria

Page 38: Csphtp1 19

2002 Prentice Hall. All rights reserved.

38

19.4.7 UPDATE Statement

authorID firstName lastName 1 Harvey Deitel

2 Paul Deitel

3 Tem Nieto

4 Kate Steinbuhler

5 Sean Santry

6 Ted Lin

7 Praveen Sadhu

8 David McPhie

9 Cheryl Yaeger

10 Marina Zlatkina

11 Ben Wiedermann

12 Jonathan Liperi

13 Jeffrey Listfield

14 Sue Jones

Fig. 19.25 Table Authors after an UPDATE operation to change a record.

Page 39: Csphtp1 19

2002 Prentice Hall. All rights reserved.

39

19.4.8 DELETE Statement

• Removes data from a table• Form: DELETE FROM tableName WHERE criteria

Page 40: Csphtp1 19

2002 Prentice Hall. All rights reserved.

40

19.4.8 DELETE Statement

authorID firstName lastName 1 Harvey Deitel

2 Paul Deitel

3 Tem Nieto

4 Kate Steinbuhler

5 Sean Santry

6 Ted Lin

7 Praveen Sadhu

8 David McPhie

9 Cheryl Yaeger

10 Marina Zlatkina

11 Ben Wiedermann

12 Jonathan Liperi

13 Jeffrey Listfield

Fig. 19.26 Table Authors after a DELETE operation to remove a record.

Page 41: Csphtp1 19

2002 Prentice Hall. All rights reserved.

41

19.5 ADO .NET and Object Model

• Provides an API for accessing database systems programmatically

• DataSets act as caches:– Store data from source in local memory

Page 42: Csphtp1 19

2002 Prentice Hall. All rights reserved.

42

19.6 Programming with ADO .NET: Extracting Information from a DBMS

• Examples that demonstrate how to connect to a database, query the database and display the results of the query

Page 43: Csphtp1 19

2002 Prentice Hall. All rights reserved.

43

19.6.1 Connecting to and Querying an Access Data Source

• Retrieves data and stores it in a DataGrid

Page 44: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline44

TableDisplay.cs

1 // Fig. 19.27: TableDisplay.cs2 // Displays data from a database table.3 4 using System;5 using System.Drawing;6 using System.Collections;7 using System.ComponentModel;8 using System.Windows.Forms;9 using System.Data;10 11 // Summary description for TableDisplay.cs.12 public class TableDisplay : System.Windows.Forms.Form13 {14 private System.Data.DataSet dataSet1;15 private System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;16 private System.Windows.Forms.DataGrid dataGrid1;17 private System.Data.OleDb.OleDbCommand oleDbSelectCommand1;18 private System.Data.OleDb.OleDbCommand oleDbInsertCommand1;19 private System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;20 private System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;21 private System.Data.OleDb.OleDbConnection oleDbConnection1;22 23 private System.ComponentModel.Container components = null;24 25 public TableDisplay()26 {27 InitializeComponent();28 29 // Fill dataSet1 with data30 oleDbDataAdapter1.Fill( dataSet1, "Authors" );31 32 // bind data in Users table in dataSet1 to dataGrid133 dataGrid1.SetDataBinding( dataSet1, "Authors" );34 }35

Constructor to populate dataSet1

Call method fill to retrieve data from database associated with oleDbConnection

Bind DataGrid to data source

Page 45: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline45

TableDisplay.cs

36 private void InitializeComponent()37 {38 this.dataSet1 = new System.Data.DataSet();39 this.oleDbDataAdapter1 = 40 new System.Data.OleDb.OleDbDataAdapter();41 this.dataGrid1 = new System.Windows.Forms.DataGrid();42 this.oleDbSelectCommand1 = 43 new System.Data.OleDb.OleDbCommand();44 this.oleDbInsertCommand1 = 45 new System.Data.OleDb.OleDbCommand();46 this.oleDbUpdateCommand1 = 47 new System.Data.OleDb.OleDbCommand();48 this.oleDbDeleteCommand1 = 49 new System.Data.OleDb.OleDbCommand();50 this.oleDbConnection1 = 51 new System.Data.OleDb.OleDbConnection();52 ((System.ComponentModel.ISupportInitialize)53 (this.dataSet1)).BeginInit();54 ((System.ComponentModel.ISupportInitialize)55 (this.dataGrid1)).BeginInit();56 this.SuspendLayout();57 // 58 // dataSet159 // 60 this.dataSet1.DataSetName = "NewDataSet";61 this.dataSet1.Locale = 62 new System.Globalization.CultureInfo("en-US");63 // 64 // oleDbDataAdapter165 // 66 this.oleDbDataAdapter1.DeleteCommand = 67 this.oleDbDeleteCommand1;68 this.oleDbDataAdapter1.InsertCommand = 69 this.oleDbInsertCommand1;

Specify how oleDbDataAdapter deletes data

Specify how oleDbDataAdapter inserts data

Page 46: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline46

TableDisplay.cs

70 this.oleDbDataAdapter1.SelectCommand = 71 this.oleDbSelectCommand1;72 this.oleDbDataAdapter1.TableMappings.AddRange(73 new System.Data.Common.DataTableMapping[] {74 new System.Data.Common.DataTableMapping(75 "Table", "Authors", 76 new System.Data.Common.DataColumnMapping[] {77 new System.Data.Common.DataColumnMapping(78 "authorID", "authorID"),79 new System.Data.Common.DataColumnMapping(80 "firstName", "firstName"),81 new System.Data.Common.DataColumnMapping(82 "lastName", "lastName")})});83 this.oleDbDataAdapter1.UpdateCommand = 84 this.oleDbUpdateCommand1;85 // 86 // dataGrid187 // 88 this.dataGrid1.DataMember = "";89 this.dataGrid1.HeaderForeColor = 90 System.Drawing.SystemColors.ControlText;91 this.dataGrid1.Location = 92 new System.Drawing.Point(16, 16);93 this.dataGrid1.Name = "dataGrid1";94 this.dataGrid1.Size = new System.Drawing.Size(264, 248);95 this.dataGrid1.TabIndex = 0;96 // 97 // oleDbSelectCommand198 // 99 this.oleDbSelectCommand1.CommandText = 100 "SELECT authorID, firstName, lastName FROM Authors";101 this.oleDbSelectCommand1.Connection = 102 this.oleDbConnection1;

Specify how oleDbDataAdapter selects data

Specify how oleDbDataAdapter updates data

Page 47: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline47

TableDisplay.cs

103 // 104 // oleDbInsertCommand1105 // 106 this.oleDbInsertCommand1.CommandText = 107 "INSERT INTO Authors(firstName, lastName) VALUES " +108 "(?, ?)";109 this.oleDbInsertCommand1.Connection = 110 this.oleDbConnection1;111 this.oleDbInsertCommand1.Parameters.Add(112 new System.Data.OleDb.OleDbParameter("firstName", 113 System.Data.OleDb.OleDbType.VarWChar, 50, 114 "firstName"));115 this.oleDbInsertCommand1.Parameters.Add(116 new System.Data.OleDb.OleDbParameter("lastName", 117 System.Data.OleDb.OleDbType.VarWChar, 50, 118 "lastName"));119 // 120 // oleDbUpdateCommand1121 // 122 this.oleDbUpdateCommand1.CommandText = 123 "UPDATE Authors SET firstName = ?, lastName = ? WHERE" +124 " (authorID = ?) AND (firstNam" +125 "e = ? OR ? IS NULL AND firstName IS NULL) AND " +126 "(lastName = ? OR ? IS NULL AND las" +127 "tName IS NULL)";128 this.oleDbUpdateCommand1.Connection = 129 this.oleDbConnection1;130 this.oleDbUpdateCommand1.Parameters.Add(131 new System.Data.OleDb.OleDbParameter(132 "firstName", 133 System.Data.OleDb.OleDbType.VarWChar, 134 50, "firstName"));135 this.oleDbUpdateCommand1.Parameters.Add(136 new System.Data.OleDb.OleDbParameter(137 "lastName",

Set connection property for oleDbUpdageCommand1

Set CommandText for oleDbUpdageCommand1

Page 48: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline48

TableDisplay.cs

138 System.Data.OleDb.OleDbType.VarWChar, 50, 139 "lastName"));140 this.oleDbUpdateCommand1.Parameters.Add(141 new System.Data.OleDb.OleDbParameter(142 "Original_authorID", 143 System.Data.OleDb.OleDbType.Integer, 0, 144 System.Data.ParameterDirection.Input, false, 145 ((System.Byte)(10)), ((System.Byte)(0)), 146 "authorID", System.Data.DataRowVersion.Original, 147 null));148 this.oleDbUpdateCommand1.Parameters.Add(149 new System.Data.OleDb.OleDbParameter(150 "Original_firstName", 151 System.Data.OleDb.OleDbType.VarWChar, 50, 152 System.Data.ParameterDirection.Input, false, 153 ((System.Byte)(0)), ((System.Byte)(0)), 154 "firstName", System.Data.DataRowVersion.Original, 155 null));156 this.oleDbUpdateCommand1.Parameters.Add(157 new System.Data.OleDb.OleDbParameter(158 "Original_firstName1", 159 System.Data.OleDb.OleDbType.VarWChar, 50, 160 System.Data.ParameterDirection.Input, false, 161 ((System.Byte)(0)), ((System.Byte)(0)), 162 "firstName", System.Data.DataRowVersion.Original, 163 null));164 this.oleDbUpdateCommand1.Parameters.Add(165 new System.Data.OleDb.OleDbParameter(166 "Original_lastName", 167 System.Data.OleDb.OleDbType.VarWChar, 50, 168 System.Data.ParameterDirection.Input, false, 169 ((System.Byte)(0)), ((System.Byte)(0)), 170 "lastName", System.Data.DataRowVersion.Original, 171 null));

Page 49: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline49

TableDisplay.cs

172 this.oleDbUpdateCommand1.Parameters.Add(173 new System.Data.OleDb.OleDbParameter(174 "Original_lastName1", 175 System.Data.OleDb.OleDbType.VarWChar, 50, 176 System.Data.ParameterDirection.Input, false, 177 ((System.Byte)(0)), ((System.Byte)(0)), 178 "lastName", System.Data.DataRowVersion.Original, 179 null));180 // 181 // oleDbDeleteCommand1182 // 183 this.oleDbDeleteCommand1.CommandText = 184 "DELETE FROM Authors WHERE (authorID = ?) AND " +185 "(firstName = ? OR ? IS NULL AND firs" +186 "tName IS NULL) AND (lastName = ? OR ? IS NULL AND " +187 "lastName IS NULL)";188 this.oleDbDeleteCommand1.Connection = 189 this.oleDbConnection1;190 this.oleDbDeleteCommand1.Parameters.Add(191 new System.Data.OleDb.OleDbParameter(192 "Original_authorID", 193 System.Data.OleDb.OleDbType.Integer, 0, 194 System.Data.ParameterDirection.Input, false, 195 ((System.Byte)(10)), ((System.Byte)(0)), 196 "authorID", System.Data.DataRowVersion.Original, 197 null));198 this.oleDbDeleteCommand1.Parameters.Add(199 new System.Data.OleDb.OleDbParameter(200 "Original_firstName", 201 System.Data.OleDb.OleDbType.VarWChar, 50,202 System.Data.ParameterDirection.Input, false, 203 ((System.Byte)(0)), ((System.Byte)(0)), 204 "firstName", System.Data.DataRowVersion.Original, 205 null));

Page 50: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline50

TableDisplay.cs

206 this.oleDbDeleteCommand1.Parameters.Add(207 new System.Data.OleDb.OleDbParameter(208 "Original_firstName1", 209 System.Data.OleDb.OleDbType.VarWChar, 50, 210 System.Data.ParameterDirection.Input, false, 211 ((System.Byte)(0)), ((System.Byte)(0)), 212 "firstName", System.Data.DataRowVersion.Original, 213 null));214 this.oleDbDeleteCommand1.Parameters.Add(215 new System.Data.OleDb.OleDbParameter(216 "Original_lastName", 217 System.Data.OleDb.OleDbType.VarWChar, 50, 218 System.Data.ParameterDirection.Input, false,219 ((System.Byte)(0)), ((System.Byte)(0)), 220 "lastName", System.Data.DataRowVersion.Original, 221 null));222 this.oleDbDeleteCommand1.Parameters.Add(223 new System.Data.OleDb.OleDbParameter(224 "Original_lastName1", 225 System.Data.OleDb.OleDbType.VarWChar, 50, 226 System.Data.ParameterDirection.Input, false, 227 ((System.Byte)(0)), ((System.Byte)(0)), 228 "lastName", System.Data.DataRowVersion.Original, 229 null));230 // 231 // oleDbConnection1232 //

Page 51: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline51

TableDisplay.cs

233 this.oleDbConnection1.ConnectionString = 234 @"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";" +235 @"User ID=Admin;Data Source=C:\Books\2001\csphtp1\" +236 @"csphtp1_examples\ch19\Books.mdb;Mode=Share " +237 @"Deny None;Extended Properties="""";Jet OLEDB:" +238 @"System database="""";Jet OLEDB:Registry " +239 @"Path="""";Jet OLEDB:Database Password="""";" +240 @"Jet OLEDB:Engine Type=5;Jet OLEDB:Database " +241 @"Locking Mode=1;Jet OLEDB:Global Partial Bulk " +242 @"Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet " +243 @"OLEDB:New Database Password="""";Jet OLEDB:" +244 @"Create System Database=False;Jet OLEDB:Encrypt " +245 @"Database=False;Jet OLEDB:Don't Copy Locale on " +246 @"Compact=False;Jet OLEDB:Compact Without Replica " +247 @"Repair=False;Jet OLEDB:SFP=False";248 // 249 // TableDisplay250 // 251 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);252 this.ClientSize = new System.Drawing.Size(292, 273);253 this.Controls.AddRange(254 new System.Windows.Forms.Control[] {255 this.dataGrid1});256 this.Name = "TableDisplay";257 this.Text = "TableDisplay";258 ((System.ComponentModel.ISupportInitialize)259 (this.dataSet1)).EndInit();260 ((System.ComponentModel.ISupportInitialize)261 (this.dataGrid1)).EndInit();262 this.ResumeLayout(false);263

Initialize oleDbConnection, and specify path to database

Page 52: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline52

TableDisplay.cs

Program Output

264 } // end of InitializeComponent265 266 [STAThread]267 static void Main() 268 {269 Application.Run( new TableDisplay() );270 }271 }

Page 53: Csphtp1 19

2002 Prentice Hall. All rights reserved.

53

19.6.2 Querying the Books Database

• Use SELECT statements on database and display results

Page 54: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline54

DisplayQueryResults.cs

1 // Fig. 19.28: DisplayQueryResults.cs2 // Displays the contents of the authors database.3 4 using System;5 using System.Drawing;6 using System.Collections;7 using System.ComponentModel;8 using System.Windows.Forms;9 using System.Data;10 11 public class DisplayQueryResults : System.Windows.Forms.Form12 {13 private System.Data.OleDb.OleDbConnection oleDbConnection1;14 private System.Data.DataSet dataSet1;15 private System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;16 private System.Data.OleDb.OleDbCommand oleDbSelectCommand1;17 private System.Data.OleDb.OleDbCommand oleDbInsertCommand1;18 private System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;19 private System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;20 private System.Windows.Forms.TextBox queryTextBox;21 private System.Windows.Forms.Button submitButton;22 private System.Windows.Forms.DataGrid dataGrid1;23 private System.ComponentModel.Container components = null;24 25 public DisplayQueryResults()26 {27 28 InitializeComponent();29 }30 31 // Visual Studio.NET generated code32

Page 55: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline55

DisplayQueryResults.cs

33 [STAThread]34 static void Main() 35 {36 Application.Run( new DisplayQueryResults() );37 }38 39 // perform SQL query on data40 private void submitButton_Click( object sender,41 System.EventArgs e )42 {43 try44 {45 // set SQL query to what user 46 // input into queryTextBox47 oleDbDataAdapter1.SelectCommand.CommandText =48 queryTextBox.Text;49 50 // clear DataSet from previous operation51 dataSet1.Clear();52 53 // Fill data set with information that results54 // from SQL query55 oleDbDataAdapter1.Fill( dataSet1, "Authors" );56 57 // bind DataGrid to contents of DataSet58 dataGrid1.SetDataBinding( dataSet1, "Authors" );59 }60 61 catch ( System.Data.OleDb.OleDbException oleException )62 {63 MessageBox.Show( "Invalid query" );64 }65 66 } // end of submitButton_Click67 }

When user clicks submit button, assign SELECT query string to OleDbDataAdapter’s SelectCommand property

Place data from database into dataSet1

Bind DataGrid to data and display results

Page 56: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline56

DisplayQueryResults.csProgram Output

Page 57: Csphtp1 19

2002 Prentice Hall. All rights reserved.

57

19.7 Programming with ADO.NET: Modifying a DBMS

• Example implements an address book– User can insert, locate and update records

Page 58: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline58

AddressBook.cs

1 // Fig. 19.29: AddressBook.cs2 // Using SQL statements to manipulate a database.3 4 using System;5 using System.Drawing;6 using System.Collections;7 using System.ComponentModel;8 using System.Windows.Forms;9 using System.Data;10 11 public class AddressBook : System.Windows.Forms.Form12 {13 private System.Windows.Forms.TextBox faxTextBox;14 private System.Windows.Forms.TextBox homeTextBox;15 private System.Windows.Forms.TextBox firstTextBox;16 private System.Windows.Forms.TextBox stateTextBox;17 private System.Windows.Forms.TextBox idTextBox;18 private System.Windows.Forms.TextBox lastTextBox;19 private System.Windows.Forms.TextBox postalTextBox;20 private System.Windows.Forms.TextBox addressTextBox;21 private System.Windows.Forms.TextBox cityTextBox;22 private System.Windows.Forms.TextBox countryTextBox;23 private System.Windows.Forms.TextBox emailTextBox;24 private System.Data.DataSet dataSet1;25 private System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;26 private System.Data.OleDb.OleDbCommand oleDbSelectCommand1;27 private System.Data.OleDb.OleDbCommand oleDbInsertCommand1;28 private System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;29 private System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;30 private System.Data.OleDb.OleDbConnection oleDbConnection1;31 private System.Windows.Forms.TextBox statusTextBox;32 private System.Windows.Forms.Label addressLabel;33 private System.Windows.Forms.Label cityLabel;34 private System.Windows.Forms.Label stateLabel;35 private System.Windows.Forms.Label idLabel;

Page 59: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline59

AddressBook.cs

36 private System.Windows.Forms.Label firstLabel;37 private System.Windows.Forms.Label lastLabel;38 private System.Windows.Forms.Label postalLabel;39 private System.Windows.Forms.Label countryLabel;40 private System.Windows.Forms.Label emailLabel;41 private System.Windows.Forms.Button clearButton;42 private System.Windows.Forms.Button helpButton;43 private System.Windows.Forms.Button findButton;44 private System.Windows.Forms.Button addButton;45 private System.Windows.Forms.Button updateButton;46 private System.Windows.Forms.Label faxLabel;47 private System.Windows.Forms.Label homeLabel;48 private System.ComponentModel.Container components = null;49 50 public AddressBook()51 {52 InitializeComponent();53 oleDbConnection1.Open();54 }55 56 // Visual Studio.NET generated code57 58 [STAThread]59 static void Main() 60 {61 Application.Run( new AddressBook() );62 }63 64 private void findButton_Click( object sender,65 System.EventArgs e )66 {67 try68 {

Perform SELECT query on database

Page 60: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline60

AddressBook.cs

69 if ( lastTextBox.Text != "" )70 { 71 // clear DataSet from last operation72 dataSet1.Clear();73 74 // create SQL query to find contact with75 // specified last name76 oleDbDataAdapter1.SelectCommand.CommandText = 77 "SELECT * FROM addresses WHERE lastname = '" +78 lastTextBox.Text + "'";79 80 // fill dataSet1 with rows resulting from81 // query82 oleDbDataAdapter1.Fill( dataSet1 );83 84 // display information85 Display( dataSet1 );86 statusTextBox.Text += "\r\nQuery successful\r\n";87 }88 else89 lastTextBox.Text = 90 "Enter last name here then press Find";91 }92 93 catch ( System.Data.OleDb.OleDbException oleException )94 {95 Console.WriteLine( oleException.StackTrace );96 statusTextBox.Text += oleException.ToString();97 }98

Empty DataSet of prior data

Modify SQL query’s text to perform SELECT operation

Fill DataSet with query results

Display data in textboxes

Page 61: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline61

AddressBook.cs

99 catch ( InvalidOperationException invalidException )100 {101 MessageBox.Show( invalidException.Message );102 }103 104 } // end of findButton_Click105 106 private void addButton_Click( object sender, System.EventArgs e )107 {108 try109 {110 if ( lastTextBox.Text != "" && firstTextBox.Text != "" )111 {112 // create SQL query to insert row113 oleDbDataAdapter1.InsertCommand.CommandText = 114 "INSERT INTO addresses (" +115 "firstname, lastname, address, city, " +116 "stateorprovince, postalcode, country, " +117 "emailaddress, homephone, faxnumber" + 118 ") VALUES ('" +119 firstTextBox.Text + "', '" +120 lastTextBox.Text + "', '" +121 addressTextBox.Text + "', '" +122 cityTextBox.Text + "', '" +123 stateTextBox.Text + "', '" +124 postalTextBox.Text + "', '" +125 countryTextBox.Text + "', '" +126 emailTextBox.Text + "', '" +127 homeTextBox.Text + "', '" +128 faxTextBox.Text + "')";129 130 // notify user that query is being sent131 statusTextBox.Text += "\r\nSending query: " +132 oleDbDataAdapter1.InsertCommand.CommandText +133 "\r\n" ;

Perform INSERT operation using OleDbCommand members

Sets CommandText property of InsertCommand to execute proper INSERT statement

Page 62: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline62

AddressBook.cs

134 135 // send query136 oleDbDataAdapter1.InsertCommand.ExecuteNonQuery();137 138 statusTextBox.Text += "\r\nQuery successful\r\n";139 }140 else141 statusTextBox.Text += "\r\nEnter at least first " +142 "and last name then press Add\r\n";143 }144 145 catch ( System.Data.OleDb.OleDbException oleException )146 {147 Console.WriteLine( oleException.StackTrace );148 statusTextBox.Text += oleException.ToString();149 }150 151 } // end of addButton_Click152 153 private void updateButton_Click( object sender, 154 System.EventArgs e )155 {156 try157 {158 // make sure users have found record159 // they wish to update160 if ( idTextBox.Text != "" )161 {162 // set SQL query to update all fields in163 // table where id number matches id164 // in idTextBox165 oleDbDataAdapter1.UpdateCommand.CommandText =166 "UPDATE addresses SET " +167 "firstname ='" + firstTextBox.Text +168 "', lastname='" + lastTextBox.Text +

Perform UPDATE operation using OleDbCommand members

Send inset query to perform INSERT operation

Sets CommandText property of UpdateCommand to execute proper Update statement

Page 63: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline63

AddressBook.cs

169 "', address='" + addressTextBox.Text +170 "', city='" + cityTextBox.Text +171 "', stateorprovince='" + stateTextBox.Text +172 "', postalcode='" + postalTextBox.Text +173 "', country='" + countryTextBox.Text +174 "', emailaddress='" + emailTextBox.Text +175 "', homephone='" + homeTextBox.Text +176 "', faxnumber='" + faxTextBox.Text +177 "' WHERE id=" + idTextBox.Text;178 179 // notify user that query is being set180 statusTextBox.Text += "\r\nSending query: " +181 oleDbDataAdapter1.UpdateCommand.CommandText +182 "\r\n";183 184 // execute query185 oleDbDataAdapter1.UpdateCommand.ExecuteNonQuery();186 187 statusTextBox.Text += "\r\nQuery successful\r\n";188 }189 else190 statusTextBox.Text += "\r\nYou may only update " +191 "an existing record. Use Find to locate the" +192 "record, then modify the information and " +193 "press Update.\r\n";194 }195 196 catch ( System.Data.OleDb.OleDbException oleException )197 {198 Console.WriteLine( oleException.StackTrace );199 statusTextBox.Text += oleException.ToString();200 }201 202 } // end of updateButton_Click203

Send update query to perform UPDATE operation

Page 64: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline64

AddressBook.cs

204 private void clearButton_Click( object sender, 205 System.EventArgs e )206 {207 idTextBox.Clear();208 ClearTextBoxes();209 }210 211 private void helpButton_Click( object sender, 212 System.EventArgs e )213 {214 statusTextBox.AppendText( 215 "\r\nClick Find to locate a record\r\n" +216 "Click Add to insert a new record.\r\n" +217 "Click Update to update the information in a record "218 + "\r\nClick Clear to empty the textboxes" );219 }220 221 private void Display( DataSet dataSet )222 {223 try224 { 225 // get first DataTable--there always will be one226 DataTable dataTable = dataSet.Tables[ 0 ];227 228 if ( dataTable.Rows.Count != 0 )229 {230 int recordNumber = ( int ) dataTable.Rows[ 0 ][ 0 ];231 232 idTextBox.Text = recordNumber.ToString();233 firstTextBox.Text = 234 ( string ) dataTable.Rows[ 0 ][ 1 ];235 lastTextBox.Text = 236 ( string ) dataTable.Rows[ 0 ][ 2 ];237 addressTextBox.Text = 238 ( string ) dataTable.Rows[ 0 ][ 3 ];

Updates display with data acquired by query

DataTable from DataSet, contains results of query

Determine if query returned any rows

Retrieve first field of database

Retrieve the rest of the fields of database

Display instructions if user clicks help

Clear textboxes if user clicks clear

Page 65: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline65

AddressBook.cs

239 cityTextBox.Text =240 ( string ) dataTable.Rows[ 0 ][ 4 ];241 stateTextBox.Text =242 ( string ) dataTable.Rows[ 0 ][ 5 ];243 postalTextBox.Text =244 ( string ) dataTable.Rows[ 0 ][ 6 ];245 countryTextBox.Text =246 ( string ) dataTable.Rows[ 0 ][ 7 ];247 emailTextBox.Text =248 ( string ) dataTable.Rows[ 0 ][ 8 ];249 homeTextBox.Text =250 ( string ) dataTable.Rows[ 0 ][ 9 ];251 faxTextBox.Text =252 ( string ) dataTable.Rows[ 0 ][ 10 ];253 }254 255 else256 statusTextBox.Text += "\r\nNo record found\r\n";257 }258 259 catch( System.Data.OleDb.OleDbException oleException )260 {261 Console.WriteLine( oleException.StackTrace );262 statusTextBox.Text += oleException.ToString();263 }264 265 } // end Display266 267 private void ClearTextBoxes()268 {269 firstTextBox.Clear();270 lastTextBox.Clear();271 addressTextBox.Clear();272 cityTextBox.Clear();273 stateTextBox.Clear();

Page 66: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline66

AddressBook.cs

Program Output

274 postalTextBox.Clear();275 countryTextBox.Clear();276 emailTextBox.Clear();277 homeTextBox.Clear();278 faxTextBox.Clear();279 }280 }

Page 67: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline67

AddressBook.csProgram Output

Page 68: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline68

AddressBook.csProgram Output

Page 69: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline69

AddressBook.csProgram Output

Page 70: Csphtp1 19

2002 Prentice Hall. All rights reserved.

70

19.8 Reading and Writing XML Files

• ADO.NET can convert data from data source into XML files– Uses methods WriteXml, ReadXml andGetXml

Page 71: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline71

XMLWriter.cs

1 // Fig. 19.30 XMLWriter.cs2 // Demonstrates generating XML from an ADO .NET DataSet.3 4 using System;5 using System.Drawing;6 using System.Collections;7 using System.ComponentModel;8 using System.Windows.Forms;9 using System.Data;10 11 public class DatabaseXMLWriter : System.Windows.Forms.Form12 {13 private System.Data.OleDb.OleDbConnection baseballConnection;14 private System.Data.OleDb.OleDbDataAdapter playersDataAdapter;15 private System.Data.OleDb.OleDbCommand oleDbSelectCommand1;16 private System.Data.OleDb.OleDbCommand oleDbInsertCommand1;17 private System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;18 private System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;19 private System.Data.DataSet playersDataSet;20 private System.Windows.Forms.DataGrid playersDataGrid;21 private System.Windows.Forms.Button writeButton;22 private System.Windows.Forms.TextBox outputTextBox;23 private System.ComponentModel.Container components = null;24 25 public DatabaseXMLWriter()26 {27 //28 // Required for Windows Form Designer support29 //30 InitializeComponent();31 32 // open database connection33 baseballConnection.Open();34

Create connection to database

Page 72: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline72

XMLWriter.cs

35 // fill DataSet with data from OleDbDataAdapter36 playersDataAdapter.Fill( playersDataSet, "Players" );37 38 // bind DataGrid to DataSet39 playersDataGrid.SetDataBinding( playersDataSet, "Players" );40 41 }42 43 // Visual Studio .NET generated code44 45 // main entry point for application.46 [STAThread]47 static void Main() 48 {49 Application.Run( new DatabaseXMLWriter() );50 }51 52 // write XML representation of DataSet when button is clicked53 private void writeButton_Click(54 object sender, System.EventArgs e)55 {56 // write XML representation of DataSet to file57 playersDataSet.WriteXml( "Players.xml" );58 59 // display XML in TextBox60 outputTextBox.Text += "Writing the following XML:\n\n" +61 playersDataSet.GetXml() + "\n\n";62 63 }64 }

Populate playersDataSet with data from database

Bind DataGrid to DataSet to display data

Create XML representation of data when user clicks button

Append XML representation to textbox

Page 73: Csphtp1 19

2002 Prentice Hall.All rights reserved.

Outline73

XMLWriter.cs

Page 74: Csphtp1 19

2002 Prentice Hall. All rights reserved.

74

19.8 Reading and Writing XML Documents

1 <?xml version="1.0" standalone="yes"?>2 <NewDataSet>3 <Players>4 <firstName>John</firstName>5 <lastName>Doe</lastName>6 <battingAverage>0.375</battingAverage>7 <playerID>1</playerID>8 </Players>9 10 <Players>11 <firstName>Jack</firstName>12 <lastName>Smith</lastName>13 <battingAverage>0.223</battingAverage>14 <playerID>2</playerID>15 </Players>16 17 <Players>18 <firstName>George</firstName>19 <lastName>O'Malley</lastName>20 <battingAverage>0.444</battingAverage>21 <playerID>3</playerID>22 </Players>23 </NewDataSet>

Fig. 19.31 XML document generated from DataSet in DatabaseXMLWriter.