Transcript PowerPoint
Road Map
The Problems
HTTP is disconnected
So many database vendors
Create a simple consistent versatile interface on the
data
Look at ADO.NET classes
OleDb
SQL server optimised
ADO.NET Classes
System.Data.OleDb.OleDbConnection
The connection object is used to create a connection between our code and the
database.
System.Data.OleDb.OleDbCommand
Used to store a command to be applied to the database. May be either raw SQL or
a stored procedure.
System.Data.OleDb.OleDbParameter
Used to model parameters passed to the stored procedures / queries.
System.Data.OleDb.OleDbDataAdapter
Used to fill a data table with the results of a command.
ADO.NET Classes Continued
System.Data.DataTable
Used to model data obtained from the database.
Data Readers
We are also going to take a look at data readers even
though they are not used on the module.
Connected v Disconnected Data
The need for locking…
User A opens a record
User B opens the same record and makes changes
User B saves the changes on the record
User A makes their changes to the record
User A now saves their changes and overwrites the
changes made by User B
Relatively easy to lock records on a local area network
Disconnected Data
When a client application access a record it communicates
with the server via the HTTP request.
The server locates and processes the data returning it to the
client at which point the connection is lost.
User A opens a record on the browser, the server locks the
record to stop User B accessing it
User B tries to access the record and is presented with a
message stating that the record is locked
User A is in the middle of editing the record and his browser
crashes thus not telling the server he is done with the record
User B sits there waiting and waiting for the record to come
free!
Add a Time – Out?
User A opens the record and goes and makes a cup of tea
The lock times out
User B opens the record
What does User A do with their data when the save the
changes?
I am not planning on exploring solutions to these
problems, simply to bring your attention to them.
OleDb v SQL Optimised Classes
OleDB is a technology devised by Microsoft for
connecting to a wide range of database management
systems (DBMS), e.g. Access, Oracle MySQL.
SQL optimised classes perform in exactly the same way
as the OleDB classes but fine tuned to work with SQL
server.
Usage
OleDb
OleDbConnection connectionToDB = new OleDbConnection ();
SQL
SqlConnection connectionToDB = new SqlConnection();
The classes also have different namespace...
using System.Data.SqlClient;
and
using System.Data.OleDb;
The Execute Function
The Connection Object
connectionToDB = new OleDbConnection(connectionString);
DSN / DSN(less) Connections
DSN = Data Source Name
The database may be file on the disk (the way that we
have been connecting to the database in this module!)
(DSN(less))
Or the database may be running on a server with an IP
address on a specific port number (remember TCP/IP
allows a program on one computer to talk to another!)
(DSN)
Data Providers
DBMS specific driver
Connection Strings
Contains DBMS specific configuration data
Specifies the data provider
//open the database
connectionToDB.Open();
The Command Object
Applies a “Command” to the data
Initialise with stored procedure name and connection
//initialise the command builder for this connection
OleDbCommand dataCommand = new OleDbCommand(SProcName,
connectionToDB);
Add parameters
//loop through each parameter
for (int Counter = 0; Counter < SQLParams.Count; Counter += 1)
{
//add it to the command object
dataCommand.Parameters.Add(SQLParams[Counter]);
}
Set the Command Type
//set the command type as stored procedure
dataCommand.CommandType = CommandType.StoredProcedure;
So far…
The Mincing Machine
Data Adapter
Initialisation
//set the select command property for the data adapter
dataChannel.SelectCommand = dataCommand;
Filling the Data Table
//fill the data adapter
dataChannel.Fill(queryResults);
Data Tables
Select * from tblAddress
To reference “Nottingham” in our code we would do the
following...
AnAddress.Town = queryResults.Rows[3]["Town"].ToString();
Data Readers
Read-only, forward-only stream of data
Faster and more light weight than data tables
Lock the data so may have problems with multiple
connections
One way flow of data
Example