Upload
martin-wilkerson
View
219
Download
0
Embed Size (px)
Citation preview
ADO.NET Tools and Wizards
Slide 2
Data Sources Window (Introduction) Use the Data Sources window to
Establish a connection Create bound control instances on a form
Slide 3
Configuring a Data Source (Steps 1) Display the Data Sources window
Click to begin creating a new data source
Slide 4
Configuring a Data Source (Steps 2)
Connect to adatabase
Slide 5
Configuring a Data Source (Steps 3)
Create a new connection or select an existing one
Slide 6
Configuring a Data Source (Steps 4)
Select the correct data source
Slide 7
Configuring a Data Source (Steps 5)
Select the database filename
Slide 8
Configuring a Data Source (Steps 6)
Configured connection
Slide 9
Configuring a Data Source (Steps 7)
Use local database copy
Slide 10
Configuring a Data Source (Steps 8)
Save the connection string
Slide 11
Configuring a Data Source (Steps 9)
Select the objects to include
Slide 12
Configuring a Data Source (Steps 10)
Configured data source
Slide 13
Creating Bound Control Instances (Introduction) Bound control instances are created by
dragging a field (or table) from the Data Sources window to the form
Slide 14
Creating Bound Control Instances (Illustration)
Slide 15
Actions Performed (Introduction) Visual Studio performs a vast amount of
work behind the scenes The BindingSource was created A BindingNavigator was created
A DataSet was generated Code to populate the DataSet
The TableAdapter was created A Connection was generated
Slide 16
The BindingSource (Introduction) The BindingSource was new to .NET 2.0 One purpose is to provide currency (current
record) management DataSets and DataTables do not provide
currency management It’s methods are used to locate a record in a
particular DataTable The BindingSource can also be used to add,
change, and delete list items Changes are propagated to the underlying data
source (DataSet and DataTable)
Slide 17
The BindingSource (Properties) Two properties are significant The DataSource property contains the
name of the DataSet The DataMember property contains the
name of a database table from the DataSet
Slide 18
The BindingSource (Illustration)
Slide 19
The BindingSource Class (Members) MoveFirst, MovePrevious, MoveNext, MoveLast methods perform navigation
Current gets the current item from the database table
Slide 20
The BindingNavigator (Introduction) The BindingNavigator provides a user
interface for the BindingSource Control instances are typically bound to
the navigator items
Slide 21
The BindingNavigator (Properties)
Slide 22
The BindingNavigator (Using) Set the BindingSource property to a
previously configured BindingSource Set the value of the various items
Slide 23
Definition (DataSet) It’s an in-memory representation of one
or more tables in a database It’s created by a data adapter It’s used by the BindingSource It can be accessed programmatically
Slide 24
What’s in a DataSet
Slide 25
Working with the Schema Definition The editor shown in the preceding
figure is used to work with Schema Definition files It is initially configured using the
underlying database and database relationships
It’s possible to add queries, relationships and other items We won't do that here
Slide 26
DataSet Visual Studio created a Schema
Definition File This XML document describes the tables in
the DataSet and their relationships Visual Studio created a strongly typed DataSet class
An instance of the DataSet class was also created
Slide 27
DataSet Class (Types) DataSets are either typed or untyped Untyped DataSet
Reference tables and fields through their corresponding collections
Typed DataSet Typed DataSets are derived from the System.Data.DataSet class
Contains additional properties and methods that allow references to tables and fields directly by name
Slide 28
DataSet Properties Boolean CaseSensitive property controls
whether String comparisons are made in a case sensitive or case insensitive way
DataSetName property defines the name of the DataSet
EnforceConstraints property defines whether ADO.NET checks constraint rules when adding, changing, or deleting data
Tables property returns the collection of DataTable objects in the DataSet
Slide 29
DataSet Methods (1) AcceptChanges method causes any changed
records to be marked as unchanged records Use to synchronize database with DataSet
Clear method removes all rows from all tables in the DataSet
Clone method makes a copy of the DataSet schema (structure)
Data is not copied Copy method copies both the schema and the
data from a DataSet Creates an exact copy of the original DataSet
Slide 30
DataSet Methods (2) GetChanges method (overloaded) examines an
existing DataSet and returns a new DataSet containing only the changed records
Returns null if DataSet does not contain changes HasChanges method returns a Boolean value
indicating whether the DataSet has pending changes
RejectChanges method causes any pending changes to be cancelled, restoring any data to their original values
Slide 31
DataTable Class (Introduction) A DataSet object typically contains one
or more DataTable objects It’s basically a database table
DataTable object contains one or more DataColumn objects representing each column
Slide 32
DataTable (Properties) CaseSensitive property of the DataTable has the
same value as the CaseSensitive property of the parent DataSet
Columns property contains a reference to a DataColumnCollection
Use to reference each column HasErrors property (Boolean) is set to True if any of
the rows contain errors PrimaryKey property contains an array of
DataColumn objects Rows property is a collection having a data type of
DataRowCollection
Slide 33
DataTable (NewRow Method) The NewRow method creates a new DataRow
object Method uses schema information obtained from
the DataTable itself Calling the NewRow method creates a new DataRow
object DataRow contains the same number of DataColumn objects as exist in the underlying DataTable
Slide 34
DataTable (Events) ColumnChanging event fires just before a new
value is stored in a particular column ColumnChanged event fires after a value is
stored in a column, ColumnChanged event fires after the ColumnChanging event
RowChanging event fires before a new value is stored in a row
RowChanged event fires after a new value has been stored in a row
Slide 35
DataSet, DataTable, DataColumn Relationships
Slide 36
DataTable (Example)
Reference a DataTable using a numeric index and string key
DataTable dtCustomers;
dtCustomers = dsCurrent.Tables[0];
dtCustomers = dsCurrent.Tables["tblNames"];
Slide 37
DataRowCollection Contains the collection of rows in the DataTable Properties Count property gets the number of rows in
the collection (records in the DataTable) Count property is 1-based
Item property (indexer) returns a row having the specified index
Index is 0-based
Slide 38
DataRowCollection Methods Add method adds a new DataRow to the end of the Rows
collection Clear method removes all of the DataRow objects from
the Rows collection Removes all of the rows from the underlying DataTable
Find method locates a single DataRow in the Rows collection
Remove method removes a DataRow in the Rows collection
RemoveAt method has the same purpose as the Remove method
Accepts the numeric index of the row to remove as its one argument
Slide 39
DataTable and Rows Relationship
Slide 40
DataRow Class Each row in the Rows collection has a data type
of DataRow Item property gets or sets the value for a
particular column in a DataRow Item property accepts one argument
RowState property indicates whether the DataRow is a new row, a deleted row, or a row whose contents have been modified
Delete method of the DataRow class marks the row for deletion
Row is not deleted until the AcceptChanges method of the DataSet or DataTable is called
Slide 41
Navigating the DataTable
Slide 42
Modifying Data in a DataTable Modifying the records in a DataSet and
its DataTable(s) and recording those changes back to the database is a two-step process First, add, change, and delete records in
the DataTable Second, record those changes back to the
database using the Update method of the OleDbDataAdapter
Slide 43
Adding a Row to a DataTable Create a new DataRow object by calling the NewRow method of the DataTable class
The NewRow method creates a new DataRow object with the same schema as the underlying DataTable
Call the Add method of the Rows collection to add the row to the DataTable
Slide 44
Adding a Row to a DataTable Example
DataRow drCurrent;
drCurrent = dtCustomers.NewRow();
drCurrent["fldCustomerNumber"] = 99;
drCurrent["fldFirstName"] = "Joe";
drCurrent["fldLastName"] = "Bob";
dtCustomers.Rows.Add(drCurrent);
Slide 45
Modifying a DataRow Using an index to the Rows collection,
reference a field within that row Example
Reference the field named fldID in the first row of the DataTable named dtNames
dtCustomers.Rows[0]["fldLastName"] = "Marty";
Slide 46
Deleting a Row from a DataTable To delete a row from a DataTable, call
the Delete method of the DataRow class Example 1
dtCustomers.Rows[0].Delete();
Example 2DataRow drCurrent;
drCurrent = dtCustomers.Rows[0];
drCurrent.Delete();
Slide 47
The Strongly Typed DataSet Class (Introduction)
The code for the DataSet appears here
Slide 48
Benefits of Strongly Typed DataSets A strongly typed DataSet is one that derives
from the System.Data.DataSet class It contains additional properties and methods to
reference the tables and fields in that DataSet Reduces coding complexity Property and method names based on the names
of the underlying database tables and fields Typed DataSets prevent runtime type
conversion errors
Slide 49
Elements of a Typed DataSet (1) A typed DataSet is merely a
custom DataSet that derives from the System.Data.DataSet class This class is automatically
generated when the DataSet is generated
Do not modify this file directly
Slide 50
Importance of Typed DataSets Exposes properties and methods allowing
access to each DataTable, its rows, and the fields in those rows by name
Properties and methods have data types corresponding to the data type of the underlying table, row, and field
Slide 51
The TableAdapter The TableAdapter is part of the
strongly typed DataSet Is used to simplify the processing of the OleDbDataAdapter
It allows dynamic queries to be processed
Slide 52
OleDbDataAdapter Class (Introduction) OleDbDataAdapter works in conjunction
with the DataSet class to read and write data Commands are sent over a connection Data is retrieved into a DataSet Commands to insert, update, or delete
data return nothing
Slide 53
OleDbDataAdapter (Properties) SelectCommand property stores SQL SELECT
statement InsertCommand property stores SQL INSERT
statement that will insert a row into a database table
UpdateCommand property stores a SQL UPDATE statement to update the contents of an existing row
DeleteCommand property stores a SQL DELETE statement that will remove a row or rows
Slide 54
OleDbDataAdapter (Methods) Fill method uses an OleDbConnection
to retrieve database records Records are loaded into a DataSet
Update method examines the DataSet for any added, changed, or deleted records Changes are recorded to DataSet Call AcceptChanges method on DataSet to
synchronize DataSet and database
Slide 55
OleDbDataAdapter (Events) FillError event fires if an error occurs
while populating the DataSet RowUpdating event fires just before row
is updated RowUpdated event fires just after a row
in the data source is updated
Slide 56
OleDbDataAdapter Class
Slide 57
OleDbCommand Class Stores SQL statements
These SQL statements are used by OleDbDataAdapter to select and update rows
OleDbDataAdapter executes command automatically
Slide 58
OleDbCommand Class (Properties) CommandText property stores SQL statement
that will be executed against a provider Connection property stores a reference to
existing OleDbConnection object Parameters property stores a reference to a
Parameters collection For each parameter in the Parameters collection,
the OleDbDataAdapter dynamically fills in the data that is used to add, change, or delete a database record
Slide 59
OleDbCommand Class (Methods) ExecuteNonQuery method executes a SQL
statement Statement does not return database rows
ExecuteReader method creates a DataReader ExecuteScalar method executes a SELECT
statement Method returns the first column of the first row
retrieved by the SELECT statement Additional data is discarded and no exception will
occur
Slide 60
OleDbCommand Class Example Example
Private modbcmdSelect As New OleDbCommand()
modbcmdSelect.CommandText = "SELECT * FROM tblNames"
modbcmdSelect.Connection = modbconCurrent
First statement creates an instance of the OleDbCommand class
Second statement stores the SQL SELECT statement in CommandText property
Finally, the Connection property is set to modbconCurrent (an existing connection)
Slide 61
SQL SELECT Statement (1) SQL SELECT statement selects one or
more rows (records) from a database table or query
Syntax
SELECT * | fieldlist FROM tablename WHERE conditionlist ORDER BY fieldlist
Slide 62
SQL SELECT Statement (2) Syntax dissection
fieldlist argument specifies the field(s) to select Commas separate field names
tablename argument contains database table name WHERE conditionlist argument contains a condition
used to restrict the rows selected Resembles the condition in an If statement
ORDER BY fieldlist argument contains a comma-separated list to sort table data
Data may be sorted in ascending or descending order
Slide 63
SQL Select Example Example
SELECT * FROM tblNames ORDER BY fldLastName
SELECT * FROM tblNames ORDER BY fldLastName, fldFirstName
SELECT fldFirstName, fldLastName FROM tblNames
Slide 64
Filling the OleDbDataAdapter (1)
Slide 65
SQL Query Parameters Use parameterized queries to select
specific records Conceptually similar to a procedure
accepting one or more arguments Syntax of parameters varies from provider
to provider
Slide 66
OleDbParameter Class (Properties) Properties
OleDbType property maps a database type to its corresponding .NET Framework type
Size property defines the number of bytes required to store the data
Size is inferred for numeric types Set explicit size for String types
Value property stores the current value of the parameter
Slide 67
OleDbParameter Class (Constructor)
Public Sub New (name As String, datatype As OleDbType, size As Integer, srccolumn As String) name argument contains the name of the
parameter datatype argument contains a value that
defines the data type of the argument size argument contains the maximum size of
the data srccolumn argument contains the name of
the column in the underlying DataTable
Slide 68
Recording DataSetChanges (1) Explicitly record any changes back to
the database using the TableAdapter The following members are used to
record changes back to the database The Update method of the TableAdapter
records the changes made to the DataTable(s) in a DataSet
The RowState property marks whether a particular DataRow was added, changed, or deleted