connecting to databases. relational databases tables and relations accessed using sql database...
TRANSCRIPT
![Page 1: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/1.jpg)
Connecting to Databases
![Page 2: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/2.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/3.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/4.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/5.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/6.jpg)
Database Connectivity with Perl CGI
![Page 7: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/7.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/8.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/9.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/10.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/11.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/12.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/13.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/14.jpg)
database connectivity with PHP
![Page 15: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/15.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/16.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/17.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/18.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/19.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/20.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/21.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/22.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/23.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/24.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/25.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/26.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/27.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/28.jpg)
database connectivity with ASP
![Page 29: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/29.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/30.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/31.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/32.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/33.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/34.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/35.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/36.jpg)
database connectivity with ColdFusion
![Page 37: Connecting to Databases. relational databases tables and relations accessed using SQL database -specific functionality –transaction processing commit](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/37.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/38.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/39.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022070306/5515e67b550346cf6f8b4f52/html5/thumbnails/40.jpg)
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