chapter 13 database access using ado.net cis 3260 introduction to programming using c# hiro takeda

73
Chapter 13 Chapter 13 Database Access Using Database Access Using ADO.NET ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

Upload: katrina-gilbert

Post on 30-Dec-2015

241 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

Chapter 13Chapter 13Database Access Using Database Access Using ADO.NETADO.NET

CIS 3260Introduction to Programming using C#Hiro Takeda

Page 2: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

2

Chapter ObjectivesChapter ObjectivesBe introduced to technologies used

for accessing databases

Become familiar with the ADO.NET classes

Write program statements that use the DataReader class to retrieve database data

Access and update databases using the DataSet and DataAdapter classes

Page 3: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

3

Chapter Objectives Chapter Objectives ((continuedcontinued))Be introduced to SQL query

statementsUse the visual development tools

to connect to data sources, populate DataSet objects, build queries, and develop data-bound applications

Page 4: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

4

DatabasesDatabasesDatabases store information in

records, fields, and tables

Database management system (DBMS): computer programs used to manage and query databases

Example DBMSs include SQL server, Oracle, and Access ◦Many DBMSs store data in tabular format

Data in tables are related through common data field keys

Page 5: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

5

Database AccessDatabase Access

Typically use a query language to program database access ◦Structured query language (SQL)

ActiveX Data Objects (ADO.NET): .NET data access technology for accessing data in databases

Page 6: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

6

ADO.NET ADO.NET Includes number of classes that can be used

to retrieve, manipulate, and update data in databases

Can work with databases in a disconnect manner

◦Database table(s) can be retrieved to a temporary file

To retrieve data first, you must connect to the database

ADO.NET uses a feature called data providers to connect, execute commands, and retrieve results from a database

Page 7: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

7

Data ProvidersData Providers

Microsoft SQL Server◦Applications using SQL Server 7.0 or later

Oracle◦Applications using Oracle data sources

Object Linking and Embedding Database (OLE DB) ◦Applications that use Microsoft Access

databasesOpen Database Connectivity (ODBC)

◦Applications supported by earlier versions of Visual Studio

Page 8: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

8

Data Providers (Data Providers (continuedcontinued))

Page 9: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

9

Data Providers (Data Providers (continuedcontinued))

Classes are encapsulated into a different namespace by provider

Four core classes make up each data provider namespace◦Connection

◦Command

◦DataReader

◦DataAdapter

Page 10: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

10

Data Providers (continued)

Page 11: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

11

Data Providers (Data Providers (continuedcontinued))Third-party vendors provide ADO.NET

data providers for their vendor specific databases

Four core classes offer common functionality, primarily due to interfaces implemented by each of the core’s base classes◦Implement an interface means to sign a

contract indicating it will supply definitions for all of the abstract methods declared in the interface

◦Each provider must provide implementation details for the methods that are exposed in the interface

Page 12: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

12

Base classes shown in Table 13-4 are all abstract

OdbcConnection must override and provide implementation details for Close( ), BeginDbTransaction( ), ChangeDatabase( ), CreateDbCommand( ), and the OpenStateChange( ) methods

Page 13: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

13

Connecting to the Database Connecting to the Database (Microsoft Access DBMS)(Microsoft Access DBMS)Add using directive using System.Data.OleDb;

Instantiate an object of connection class◦Send connection string that includes

the actual database provider and the data source (name of the database)

string sConnection;sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;"

+ "Data Source=member.mdb";OleDbConnection dbConn;dbConn = new OleDbConnection(sConnection);dbConn.Open();

Enclose in try…catch block

Page 14: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

14

Retrieving Data from the Retrieving Data from the DatabaseDatabaseOne way to retrieve records

programmatically: issue an SQL query

Object of OleDbCommand class used to hold SQL

string sql;

sql = "Select * From memberTable Order By LastName Asc, "

+ "FirstName Asc;"; // Note the two semicolons

OleDbCommand dbCmd = new OleDbCommand();

dbCmd.CommandText = sql; // set command SQL string

dbCmd.Connection = dbConn; // dbConn is connection object

Page 15: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

15

SQL QueriesSQL QueriesSQL: universal language used with

many database products including SQL Server and Microsoft Access

Queries can be written to SELECT, INSERT, UPDATE, and DELETE data in database tables

Can use the SELECT statement to retrieve results from multiple tables by joining them using a common field

Page 16: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

16

SQL Queries (SQL Queries (continuedcontinued))

Select * From memberTable Order By LastName Asc, FirstName Asc;

◦Asterisk (*) selects all fields (columns) in database Can replace * by field name(s)

◦Asc (ascending) returns in ascending order by LastName; duplicate last names ordered by first name

◦Retrieves all rows (records) Where clause can be added to selectively identify rows

Select PhoneNumber From memberTable Where FirstName = 'Gary' AND LastName = 'Jones';

Page 17: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

17

Retrieving Data from the Retrieving Data from the DatabaseDatabaseSelect StudentID, FirstName, LastName,

PhoneNumber From memberTable;

Figure 13-1 Access database table

Page 18: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

18

Processing DataProcessing DataCan retrieve one record at a time in memory

◦Process that record before retrieving another

OR can store the entire result of the query in temporary data structure similar to an array

◦Disconnect from the database

ADO.NET includes data reader classes (by provider)

◦ Used to read rows of data from a database

Page 19: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

19

Retrieving Data Using a Data Retrieving Data Using a Data ReaderReader

OleDbDataReader and SqlDataReader class ◦READ-ONLY – Forward retrieval (sequential

access)

◦Results returned as query executes Sequentially loop through the query results

Only one row is stored in memory at a time

Useful to accessing data from large database tables

Declare an object of the OleDbDataReader or and SqlDataReader class

Call ExecuteReader( ) method

Page 20: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

20

Retrieving Data Using a Data Retrieving Data Using a Data Reader (Reader (continuedcontinued))To position the reader object onto the row of

the first retrieved query result, use Read( ) method of the OleDbDataReader (or SqlDataReader) class

◦Read( ) also used to advance to the next record

◦Think about what is retrieved as one-dimensional table consisting of the fields from that one row Fields can be referenced using actual ordinal index

Fields can also be referenced using the table's field names as indexers to the data reader object

Page 21: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

21

Retrieving Data Using a Data Retrieving Data Using a Data Reader (Reader (continuedcontinued))First call to dbReader.Read( ) retrieves

first row◦ dbReader[0] refers to 1234◦ dbReader[1] refers to “Rebecca”◦ dbReader["FirstName"] also refers to "Rebecca"

Field name must be

enclosed in double quotes when used as

indexers Figure 13-1 Access database table

Page 22: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

22

Retrieving Data Using a Data Retrieving Data Using a Data Reader (Reader (continuedcontinued))

Page 23: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

23

Retrieving Data Using a Data Retrieving Data Using a Data Reader (Reader (continuedcontinued))

Member aMember;OleDbDataReader dbReader;dbReader = dbCmd.ExecuteReader( ); // dbCmd—

OleDbCommand objectwhile (dbReader.Read( )) { // retrieve records 1-by-1... aMember = new

Member(dbReader["FirstName"].ToString( ), dbReader["LastName"].ToString( )); this.listBox1.Items.Add(aMember);}

dbReader.Close(); // Close the Reader object

dbConn.Close(); // Close the Connection object

Page 24: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

24

Retrieving Data Using a Data Retrieving Data Using a Data Reader (Reader (continuedcontinued))Close connections

◦By doing this, you unlock the database so that other applications can access it

using statement can be added around the entire block of code accessing the database◦When added, no longer necessary to

call the Close( ) methods

Page 25: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

25

Updating Database DataUpdating Database DataData Reader enables read-only access to

database

Several ways to change or update database

◦Can write Insert, Delete, and Update SQL statements and then execute those queries by calling OleDbCommand.ExecuteNonQuery( ) method

◦Can instantiate objects of dataset and data adapter classes Use data adapter object to populate dataset object

Adapter class has Fill( ) and Update( ) methods

Page 26: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

26

Updating Database Data Updating Database Data ((continuedcontinued))Not required to keep a continuous live

connection

◦Can create temporary copy in memory of the records retrieved using a dataset

Interaction between dataset and actual database is controlled through data adapter

Each of the different data providers has its own dataset and data adapter objects

◦System.Data.OleDb – Access database

Page 27: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

27

Using Datasets to Process Using Datasets to Process Database RecordsDatabase Records Instantiate a connection object using

connection string ◦Not necessary to call Open( ) method

Select records (and fields) from database by executing SQL Select

Instantiate object of Dataset class (for a table)

DataSet memberDS = new DataSet();

Instantiate an object of DataAdapter class

OleDbDataAdapter memberDataAdap = new OleDbDataAdapter( );

Page 28: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

28

Command Builder ClassCommand Builder Class

Class that automatically generates SQL for updates ◦Must set the SelectCommand property of

the OleDbDataAdapter class private OleDbCommandBuilder cBuilder;:cBuilder = new

OleDbCommandBuilder(memberDataAdap);memberDataAdap.SelectCommand = dbCmd;

CommandBuilder object only used for datasets that map to a single database table

See slide 14 – dbCmd set the

SQL Select

Page 29: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

29

Filling the Dataset using the Filling the Dataset using the Data AdapterData Adapter After instantiating objects of data

adapter, dataset, and command builder classes

Using data adapter Fill( ) method to specify name of table to use as the data source

memberDataAdap.Fill(memberDS, "memberTable");

To show contents of table, presentation user interface layer is needed

◦Grid control works well

Page 30: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

30

Creating a DataGrid to Hold Creating a DataGrid to Hold the Datasetthe Dataset

Place DataGrid control object on Windows Form

◦DataGrid object can be selected from ToolBox

◦Able to navigate around in data grid

◦Can make changes by editing current records

◦Can insert and delete new records

New DataGridView class added to .NET 2.0

Page 31: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

31

Updating the Database Updating the Database To tie DataGrid object to dataset,

SetDataBinding( ) method is used this.dataGrid1.SetDataBinding(memberDS, "memberTable");

Load the database into a DataGrid object and make changes

Flush the changes back up to live database using the Update( ) method of DataAdapter class

memberDataAdap.Update(memberDS, "memberTable");

Page 32: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

32

Data Source Configuration Data Source Configuration Tools Tools .NET 2.0 and Visual Studio 2005

include new data configuration tools◦Makes it easier to develop applications

that access data◦More drag-and-drop development – code

is automatically generatedWizards that automatically:

◦Generate connection strings◦Create dataset and table adapter

objects◦Bring data into the application

Page 33: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

33

SQL Server DatabasesSQL Server DatabasesCreate new SQL Server Databases

◦Display Server Explorer Window (from View menu)

◦Right-click on Data Connection ◦Select Create new SQL Server database

Create new tables◦Right-mouse click on Tables node ◦Select Add new Table

Administrative permissions on the local machine needed to create or attach to a SQL Server using Visual Studio

Page 34: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

34

Create Create SQL SQL Server Server DatabaDatabase se ((continuedcontinued

))

Figure 13-9 Server Explorer window

Right-mouse click to reveal pop-up menu

Page 35: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

35

SQL Server Database SQL Server Database Tables Tables Store Data in Tables

◦Use the Server Explorer window◦Right-mouse click on a table, select Show Table Data to store data

◦Type the data in the table◦Table saved on exit

Modify the structure◦Select Open Table Definition (Right-mouse click in Server Explorer window)

◦Set primary keys Right-mouse clicking on the key row

Page 36: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

36

Data Source Configuration Data Source Configuration ToolsTools

Figure 13-5 Data Sources window

Data Source Configuration wizard simplifies connecting your application to adata source

Page 37: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

37

Data SourceData SourceAdd new data source to application

◦Open Data Sources window (from Data menu) Data Sources window visually shows the

dataset objects available to the project Datasets represents the in-memory cache of data

Datasets mimics the database from which it is based

◦First prompted to choose a data source type

Page 38: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

38

Choose a Data Source Choose a Data Source TypeType

Figure 13-6 Connect to a Database

Page 39: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

39

New ConnectionNew ConnectionConnections that are already established

(attached) are available from the dropdown list

Figure 13-7 Add a New Connection

Follow same steps

for SQL Server,

Oracle, or Microsoft Access

databases

Page 40: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

40

Add Add ConnectionConnection

Figure 13-8 Select the data source

Refresh button should be pressed

after the server name is entered

Test Connection

(local)\SqlExpress is default server name

Page 41: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

41

Connection String CreatedConnection String Created

Figure 13-12 Save connection string

Page 42: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

42

Dataset Object CreatedDataset Object Created

Identify database objects that you want to bring into your application◦ Chosen

objects become accessible through the dataset object Figure 13-13 Choose dataset objects

Select full tables or specific columns –

DataSet created from this!

Page 43: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

43

Data Sources and Solution Data Sources and Solution Explorer WindowsExplorer Windows

Solution Explorer window shows Dataset –

(StudentDataBaseDataSet.xsd) is created

Figure 13-14 Data Sources and Solution Explorer windows

Page 44: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

44

DataGridView ControlDataGridView ControlPlaceholder control for displaying data on

form◦DataGridView is new to .NET Framework 2.0◦To instantiate DataGridView control, drag a

table from Data Sources window to formSpecify how data is formatted and

displayed◦DataGridView – Customizable table that allows

you to modify columns, rows, and borders Freeze rows and columns for scrolling purposes Hide rows or columns Provide ToolTips and shortcut menus

Page 45: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

45

Figure 13-15 DataGridView control placed on form

Added benefit:DataSet, BindingSource, BindingNavigator, and TableAdapter objects automatically instantiated

Table dragged from Data Sources window to the form; DataGridView Control created

Component Tray

Page 46: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

46

Customize the DataGridView Customize the DataGridView ObjectObject

Use smart tag

Figure 13-16 Customizing the DataGridView control

Page 47: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

47

Figure 13-17 Edit DataGridView Columns

Customize Customize the the DataGridView DataGridView ObjectObject(continued)(continued)

Page 48: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

48

Customize Customize the the DataGridViDataGridView Objectew Object(continued)(continued)

Figure 13-18 Example using Configuration Tools output

Page 49: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

49

Customize the DataGridView Customize the DataGridView Object (Object (continuedcontinued))

Page 50: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

50

Customize the DataGridView Customize the DataGridView Object (Object (continuedcontinued))

Figure 13-18 Example using Configuration Tools output

Page 51: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

51

Adding Update Adding Update FunctionalityFunctionalityData adapter and dataset used to

update data using disconnected architecture ◦Data adapters and/or table adapters read

data from a database into a dataset Interaction between the dataset and

the actual database is controlled through the methods of the data adapter or table adapter objects◦To write changed data from the dataset

back to the database – using SELECT, INSERT, DELETE, and UPDATE SQL statements Properties of data adapters and/or table

adapters

Page 52: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

52

TableAdaptersTableAdaptersData adapter on steroidsTableAdapter’s Update( ) method has to have

available SQL Select, Insert, Delete, and Update commands

Configure TableAdapter to update data◦ Select the TableAdapter object in component tray to

view its properties TableAdapter has SelectCommand,

InsertCommand, UpdateCommand, and DeleteCommand properties

Set the SQL query for the CommandText for these properties

◦ Use the DataSet Designer to view and modify CommandText for these properties

Page 53: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

53

DataSet DesignerDataSet DesignerCreate and modify data and table

adapters and their queriesTo start the designer, double-click

a dataset in Solution Explorer window or right-click the dataset in the Data Sources window

Visual representation of the dataset and table adapter is presented

Page 54: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

54

Figure 13-21 Dataset Designer opened

TableAdapter object

Page 55: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

55

Set the UpdateCommand Set the UpdateCommand PropertyProperty

Figure 13-22 Updating the UpdateCommand

Clicking in the value box beside theUpdateCommand property reveals New

Page 56: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

56

Query BuilderQuery Builder

Once New is selected, three new rows are added below the UpdateCommand

CommandText holds the SQL statement

Open the Query Builder by clicking the CommandText value box ( . . .)

Figure 13-24 CommandText property value for the UpdateCommand

Page 57: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

57

Query Builder (Query Builder (continuedcontinued))First prompted to select the tableCan type the SQL statement into the SQL pane or

Use the Diagram pane to select columns you want to update

Grid pane in the center can be used to filter and enter parameterized expressions

Results pane can be used for testing query◦Located at bottom of the Query Builder

Page 58: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

58

Query Query Builder Builder ((continuedcontinued

))

Diagram pane

Grid pane

SQLpane

Resultspane

Figure 13-23 Identify the Table for the Update

Page 59: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

59

Parameterized QueriesParameterized QueriesParameters

◦Values provided at run timeSpecial Symbol indicates insertion point

◦SQL Server – (@) is placed in front of an identifier Example

DELETE FROM Student WHERE (student_ID = @student_ID)

◦Access – a question mark symbol (?) is used No identifier can follow the ? symbol with Access

OLE DB and ODBC Data Providers do not support named parameters

Page 60: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

60

Parameterized Queries Parameterized Queries ((continuedcontinued))

Use @ symbol

with SQL

Server

Figure 13-24 CommandText property value for the UpdateCommand

Page 61: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

61

Add More Queries to Add More Queries to TableAdapter ObjectsTableAdapter Objects

TableAdapters has Fill( ) and Update( ) methods to retrieve and update data in a database

Other queries can be added as methods called like regular methods◦ This is the added benefit TableAdapters offers over

DataAdapters◦ Use DataSet Designer to add the additional queries

(methods)◦ Have the option of naming these methods

Methods are automatically named FillBy and GetDataBy◦ SQL Select statement generated along with the Fill and Get

methods

Page 62: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

62

Add More Queries to Add More Queries to TableAdapter Objects TableAdapter Objects ((continuedcontinued))

Use DataSet Designer window to add the additional queries◦Right-click TableAdapater in the DataSet Designer window

◦Select Add Query from the pop-up menu This displays a TableAdapter Query

Configuration tool Be asked “How should the TableAdapter query

access the database?” Select Use SQL statement TableAdapter Query Configuration tool wizard

launched

Page 63: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

63

Add More Queries to Add More Queries to TableAdapter Objects TableAdapter Objects ((continuedcontinued))

Figure 13-27 Multiple Queries with the TableAdapter

Figure 13-28 Naming the new query methods

Page 64: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

64

Add a Button and Textbox for Add a Button and Textbox for the New Queriesthe New Queries

Buttons to execute the new TableAdapter queries can be added to the navigational tool strip

Click on the navigational tool strip to the right of the Save button; a new button appears◦Button enables you to add additional controls

Double-click button to create event-handler methodprivate void btnRetrieve_Click( object sender, EventArgs e ) {

studentTableAdapter.FillByLastName

(studentDataBaseDataSet.Student, txbxLastName.Text); }

Page 65: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

65

Connecting Multiple Connecting Multiple TablesTablesBest to select all of the tables that

you will need originally when you create the dataset object◦Without regenerating the dataset, several

options Use Query Builder and add INNER JOIN to

Select statement for the TableAdapter’s SelectCommand Use the graphical capabilities of the tool on Diagram Pane, or you can type the SQL statement into SQL pane

Use the DataSet Designer Double-click on the dataset file

DataSet Designer opens the DataSet and TableAdapter objects graphically displayed as a single unit

Page 66: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

66

Use the DataSet Designer toUse the DataSet Designer to Connect Multiple TablesConnect Multiple Tables Change the TableAdapter

CommandText for the SelectCommand so that when the Fill( ) method is called, dataset is populated with results from both tables

Call the TableAdapter's Fill( ) method in the page load event handlerthis.studentTableAdapter.Fill( this.studentDataBaseDataSet.S

tudent );

Page 67: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

67

Use the DataSet Designer Use the DataSet Designer ((continuedcontinued))

Figure 13-29 Revise the CommandText for the SelectCommand

Page 68: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

68

Modify the Modify the SelectCommaSelectCommand to Connect nd to Connect Multiple Multiple Tables Using Tables Using the Query the Query BuilderBuilder

Figure 13-30 Use the Query Builder to modify the SelectCommand CommandText

Page 69: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

69

Modify the SelectCommand to Modify the SelectCommand to Connect Multiple Tables Using the Connect Multiple Tables Using the Query BuilderQuery BuilderSELECT student_ID, student_FirstName, student_LastName,

major_ID, student_Phone, major_Name, major_Chair, major_Phone

FROM Student

INNER JOIN Department ON Student.major_ID = Department.major_ID

Once the relationship is established between the tables, add columns from the second table to the data grid◦Do this by selecting the data grid's smart tag

in the form design mode

Page 70: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

70

Display Data Using Details Display Data Using Details ViewViewFrom Data Sources window

◦Use pull-down menu and select Details

◦Drag the entire table onto the form You get Label and TextBox objects for

each column in the dataset Label is the column identifier with spaces

replacing underscores Change its Text property from the Properties

window

Page 71: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

71

Display Data Using Details View Display Data Using Details View ((continuedcontinued))

Figure 13-34 Details view

Page 72: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

72

Connect to Microsoft Access Connect to Microsoft Access DatabaseDatabaseTo link to a database with multiple tables,

create a relationship between the tables using the DataSet Designer ◦ Create relationship between the tables (if a

relationship is not already established) using DataSet Designer Right-click the parent table and then select Add

Relation from the pop-up menu◦ Once this relationship is created, go to Data

Sources window and populate your form with data bound controls from both tables Not necessary to use the Query Builder to

generate new Command objects

Page 73: Chapter 13 Database Access Using ADO.NET CIS 3260 Introduction to Programming using C# Hiro Takeda

73

Connect Multiple Tables Using Connect Multiple Tables Using Microsoft Access DatabaseMicrosoft Access Database

Figure 13-37 Add a relationship between tables