PowerPoint

advertisement
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
Download