CF Database I Jeff Peters jeff@grokfusebox.com. Why Are You Here? Data and Persistence ODBC...

Preview:

Citation preview

CF Database I

Jeff Petersjeff@grokfusebox.com

Why Are You Here?

Data and Persistence

ODBC

Relational vs. Flat

SQL

CFQUERY, CFOUTPUT, CFLOOP

Practicum

Data and Persistence

Persistence = Turn off, turn on—data still there.

Secondary storage (disk or other nonvolatile)

DBMS

Excel

Text file

ODBC

Open DataBase Connectivity

Allows a common interface to many databases.

Does not homogenize SQL

Must be configured on the CF server

Relational vs. Flat

Relational: Tables may be linked (related) to make storage more efficient.

E.F. Codd

Flat: Tables cannot be linked. Think of a spreadsheet.

CFQUERY

Allows any SQL statement to be run.

Returns a recordset depending on SQL.

Can pass authentication attributes:

USERNAME

PASSWORD

Can cache data for better performance.

CFOUTPUT

Refers to a CFQUERY recordset to generate output to the browser.

May be nested using the GROUP attribute.

May NOT be nested without the GROUP attribute (see CFLOOP).

CFLOOP

Refers to a CFQUERY recordset; does not produce output to the browser.

CFLOOP may also be used for incremental loops, lists, and objects—not the scope of this session.

SQL

Structured Query Language

Common syntax for interacting with a database. (Beware variations)

SELECT, INSERT, UPDATE, DELETE

More complex commands available; related to DBA functions.

Caching Queries

Improves performance by storing data in server memory.

Implemented through CFQUERY

CACHEDWITHIN attribute

Practicum – ODBC

MS Access: CFDB101

webroot\cfun03\CFDB101.mdb

MS Excel: CFDB101Excel

webroot\cfun03\Members.xls

Text File: CFDB101Text

webroot\cfun03\TextDB\Members

Practicum – CFQUERY

SELECT

INSERT

DELETE

UPDATE

Practicum – CFQUERYSELECT

<cfquery name="qryGetMembers" datasource="CFDB101" dbtype="ODBC"> SELECT memberNumber, lastName, firstName, email, phone, memberSince FROM Members</cfquery>

<cfdump var="#qryGetMembers#">

Practicum – CFQUERYSELECT

Practicum – CFQUERYINSERT

<cfquery datasource="CFDB101" dbtype="ODBC"> INSERT INTO Members ( memberNumber, lastName, firstName, email, phone, memberSince ) VALUES ( 4, 'Adams', 'John Q.', 'jqada@grokfusebox.com', '7035554444', #CreateODBCDate(Now())# )</cfquery>

Practicum – CFQUERYINSERT

Practicum – CFQUERYDELETE

<cfquery datasource="CFDB101" dbtype="ODBC"> DELETE FROM Members WHERE memberNumber = '4'</cfquery>

Practicum – CFQUERYDELETE

Practicum – CFQUERYUPDATE

<cfquery datasource="CFDB101" dbtype="ODBC"> UPDATE Members SET phone = '7035551212' WHERE memberNumber = '1'</cfquery>

Practicum – CFQUERYUPDATE

Practicum – CFOUTPUT<cfquery name="qryGetMembers" datasource="CFDB101" dbtype="ODBC"> SELECT lastName, firstName, memberSince FROM MembersORDER BY memberSince</cfquery>

<h3><cfoutput query="qryGetMembers"> <span style="color: red"> #DateFormat(memberSince,"mm/dd/yyyy")# </span>: #firstName# #lastName#<br></cfoutput></h3>

Practicum – CFOUTPUT

Practicum – CFLOOP<cfquery name="qryGetMembers" datasource="CFDB101" dbtype="ODBC"> SELECT lastName, firstName, memberSince FROM MembersORDER BY memberSince</cfquery>

<h3><cfloop query="qryGetMembers"> <cfset memberYears = DateDiff("YYYY",memberSince,Now())> <cfoutput> #firstName# #lastName# - Member for #memberYears# years. <br> </cfoutput></cfloop></h3>

Practicum – CFLOOP

Thomas Jefferson - Member for 226 years.John Adams - Member for 226 years.George Washington - Member for 226 years.

Practicum – Caching<cfquery name="qryGetMembers" datasource="CFDB101" dbtype="ODBC" cachedwithin="#CreateTimeSpan(1, 0, 0, 0)#"> SELECT memberNumber, lastName, firstName, email, phone, memberSince FROM Members</cfquery>

Bonus – Aqua Data Studio

http://www.aquafold.com

Interfaces with DB2, Informix, MySQL, Oracle, PostgreSQL, SQL Server, SyBase, any JDBC source.

Q & A

Recommended