connecting to databases. relational databases tables and relations accessed using sql database...

40
Connecting to Databases

Upload: carter-miller

Post on 28-Mar-2015

227 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

Connecting to Databases

Page 2: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

relational databases

• tables and relations

• accessed using SQL

• database -specific functionality– transaction processing

• commit and rollback

– different SQL dialects– auto-numbered table rows– programming

Page 3: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

connection technologies

• ODBC– Access, SQLServer, most databases have an ODBC

interface– Excel, CSV files

• JDBC– most databases have JDBC drivers

• OLE DB– Windows only

• specific database drivers• client libraries

– database specific APIs

Page 4: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

common tasks

• locking mechanisms– exclusive locks– read-only (sharing) locks)

• database connection– DSN– userID– password

Page 5: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

common tasks

• query the database

• retrieve a result set

• process the result set

• error handling

• release resources

Page 6: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

Database Connectivity with Perl CGI

Page 7: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

DBM files

• classic Perl data format

• essentially persistent associative arrays– elements are key-value pairs

• look up values using keys

• perform efficient insertion/deletion of values

Page 8: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

CSV files

• Comma Separated Value text format

• use DBI module with DBD:CSV module

• allows SQL manipulation of CSV files

• only simple queries possible

• slower than conventional text processing

• good prototyping approach before moving to an RDBMS

Page 9: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

Perl DBI module

• abstract set of tools to interact with (relational) databases

• uses database specific drivers (DBD) to implement commands– DBD modules

• DBD:ODBC• DBD:Oracle• DBD:CSV etc

Page 10: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

interaction with databases

• prepare– parse SQL

– validate SQL

– create a statement handle

• execute– passes statement to database

– database constructs query results

Page 11: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

interaction with databases

• fetch– query results pulled into Perl data structures

– processing then carried out on fetched data

• deallocation– release of database resources at end of

processing

– clears memory, removes any locks

– handled automatically

Page 12: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

Example

...use DBI;my $db = DBI->connect ("dbi:Oracle:fridge", "user", "pass");

my $sql = $db->prepare ("SELECT * FROM FREEZER");$sql->execute();@items = $sql->fetchrow_array();...

Page 13: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

summary of Perl DBI

• powerful approach

• DBD modules available for most databases

• available on most platforms– compatability problems with different Perl versions

• CGI not suitable for high-end systems– speed and security problems

• flock command– exclusive locks or sharing locks– resources released when filehandles are destroyed

Page 14: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

database connectivity with PHP

Page 15: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

database-specific extensions

• written in C++

• non-portable– bound to one database

• fast– optimised to database

• support all functionality

• non-standard interface

• significant code-rewriting to change database

Page 16: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

PEAR DB Library

• database independent abstraction layer

• provided as standard with PHP

• sits on top of DB client libraries

• code more portable to other databases

• supports only standard DB functionality

• runs slightly slower than specific extensions

Page 17: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

Example

<?phprequire_once ('DB.php');$db = DB::connect ("mysql://user:pass@server/fridge");$sql = "SELECT * FROM FREEZER";$q = $db->query ($sql);while ($q->fetchInto($item)) {

...}?>

Page 18: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

PHP with PEAR DB

• powerful approach

• current technology of choice for small to mid-size 3-tier systems

• easy to implement

• portable across different platforms

• specific extensions can optimise performance

• limited use for high-end applications– because of general PHP scaleability issues

Page 19: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

database connectivity with JSP and servelets

Page 20: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

JDBC

• Java API for Databases– packaged with Java Enterprise

• interacts with three major database architectures– relational

• main design focus of JDBC

– object-oriented• data and methods bundled together in a class hierarchy

– object-relational

Page 21: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

JDBC

• advantages– object to relational mapping– tables become objects with standard properties and

methods– database independence– full Java support for distributed computing

Page 22: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

JDBC driver types• Type 1

– bridges to client libraries– requires “client” software

• example:JDBC-ODBC bridge

• Type 2– native API drivers– JDBC driver calls native methods– native methods provided by database vendors– requires “client” software

Page 23: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

JDBC driver types

• Type 3

• generic “client” API

• uses sockets to call database-specific middleware

• most flexible

• can provide simultaneous access to multiple databases

Page 24: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

JDBC driver types

• Type 4

• database specific, but networked

• talk directly to database using sockets

• use proprietary network protocols

• almost never documented

• purchased directly from database vendors

Page 25: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

Example

public class Fridge { public static void main(String [] args) {

String url = "jdbc:msql://fridge.com/fridge";Connection db = null;...

try {db = DriverManager.getConnection

(url,"user","pass"); Statement sql = db.createStatement ();

Page 26: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

Example

String query = "SELECT * FROM FREEZER"; ResultSet r = sql.executeQuery (query); while (r.next()) { … // do some stuff }catch(Exception e){e.printStackTrace ();}try {db.close ();}catch(Exception e){e.printStackTrace ();} }}

Page 27: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

summary of JDBC• integrates well with JSP/servelet programming

• full power of Java programming

• robust error and exception handling

• suitable for mid-to-high-end 3- and multi-tier systems– too sophisticated for simpler systems

• useful tools to ease development– IDEs: NetBeans, Eclipse– Jakarta Turbine

Page 28: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

database connectivity with ASP

Page 29: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

ADO

• ActiveX Data Objects

• provide an API for accessing databases

• use OLE DB, ODBC

• Windows platform specific

• ASP processor creates standard objects to manipulate and retrieve data– Command, Connection, Recordset, Record, Field,

Error, Parameter, Property, Stream

Page 30: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

ADO Objects

• Command ADODB.Command– allows the manipulation of database commands– execute method

• Connection ADODB.Connection– represents a connection to a database– has methods to execute, commit, rollback etc

Page 31: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

ADO Objects

• Recordset ADODB.Recordset– represents the records returned by a DB query– iterates through records– sorts and moves records– adds and deletes records

• Record ADODB.Record– represents a row in a RecordSet

• Field ADODB.Field– represents a data field in a Record

Page 32: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

ADO Objects

• Error ADODB.Error

• Parameter ADODB.Parameter

• Property ADODB.Property

• Stream ADODB.Stream

Page 33: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

Example

<% Set db = Server.CreateObject ('ADODB.Connection')

str = "driver=MySQL; ; uid='user'; pwd='pass'; database=Fridge"

'open the connection. db.Open str 'create a recordset Set r = Server.CreateObject ('ADODB.Recordset')‘... continued ...

Page 34: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

Example

‘... continued ...'construct the SQL for the querysql = "SELECT * FROM FREEZER"'get the data into the recordsetr.Open sql, db...'release resourcesSet r = NothingSet db = Nothing%>

Page 35: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

summary of ASP and ADO

• powerful set of tools

• platform specific (Windows)

• versioning incompatabilities– different versions of Windows– different versions of ADO

• difficult to use– improved under .NET framework

• not worth the effort for low-end systems– PHP a better choice

Page 36: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

database connectivity with ColdFusion

Page 37: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

ColdFusion• database connection through CFQUERY tag

– ODBC• most databases

• standard functionality only

– OLE DB (Windows only)• Access and SQL Server as standard

• others available

– Native drivers• database specific

• database-specific extensions– not portable

Page 38: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

CFQUERY syntax

<CFQUERY NAME = "query_name" DATASOURCE = "datasource_name" DBTYPE = "dbtype" CONNECTSTRING = "connection_string"> SQL statements</CFQUERY>• Accessed with <CFOUTPUT QUERY = "query_name">

Page 39: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

Example

<CFQUERY NAME = "fridge_query" DATASOURCE = "Fridge" DBTYPE = "ODBC" CONNECTSTRING = "DRIVER=MicroSoft Access Driver (*.mdb);DBQ=D:\dbfiles\Fridge.mdb;FIL=MSAccess;UID=user;PWD=pass"> SELECT * FROM FREEZER</CFQUERY><!---results now contained in a query object called fridge_query --->

Page 40: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit

summary of ColdFusion approach

• powerful tag-based DB interface

• no DB-specific knowledge required

• wide range of databases supported

• good for medium to high end systems

• data locking through CFLOCK