Title: CF Database I
1CF Database I
Jeff Peters jeff_at_grokfusebox.com
2Why Are You Here?
- Data and Persistence
- ODBC
- Relational vs. Flat
- SQL
- CFQUERY, CFOUTPUT, CFLOOP
- Practicum
3Data and Persistence
- Persistence Turn off, turn ondata still there.
- Secondary storage (disk or other nonvolatile)
- DBMS
- Excel
- Text file
4ODBC
- Open DataBase Connectivity
- Allows a common interface to many databases.
- Does not homogenize SQL
- Must be configured on the CF server
5Relational 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.
6CFQUERY
- 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.
7CFOUTPUT
- 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).
8CFLOOP
- Refers to a CFQUERY recordset does not produce
output to the browser. - CFLOOP may also be used for incremental loops,
lists, and objectsnot the scope of this session.
9SQL
- Structured Query Language
- Common syntax for interacting with a database.
(Beware variations) - SELECT, INSERT, UPDATE, DELETE
- More complex commands available related to DBA
functions.
10Caching Queries
- Improves performance by storing data in server
memory. - Implemented through CFQUERY
- CACHEDWITHIN attribute
11Practicum ODBC
- MS Access CFDB101
- webroot\cfun03\CFDB101.mdb
- MS Excel CFDB101Excel
- webroot\cfun03\Members.xls
- Text File CFDB101Text
- webroot\cfun03\TextDB\Members
12Practicum CFQUERY
- SELECT
- INSERT
- DELETE
- UPDATE
13Practicum CFQUERYSELECT
ltcfquery name"qryGetMembers"
datasource"CFDB101" dbtype"ODBC"gt
SELECT memberNumber, lastName,
firstName, email, phone,
memberSince FROM Members lt/cfquerygt ltc
fdump var"qryGetMembers"gt
14Practicum CFQUERYSELECT
15Practicum CFQUERYINSERT
ltcfquery datasource"CFDB101" dbtype"ODBC"gt
INSERT INTO Members (
memberNumber, lastName,
firstName, email, phone,
memberSince ) VALUES (
4, 'Adams', 'John Q.',
'jqada_at_grokfusebox.com', '7035554444',
CreateODBCDate(Now())
) lt/cfquerygt
16Practicum CFQUERYINSERT
17Practicum CFQUERYDELETE
ltcfquery datasource"CFDB101" dbtype"ODBC"gt
DELETE FROM Members WHERE memberNumber
'4' lt/cfquerygt
18Practicum CFQUERYDELETE
19Practicum CFQUERYUPDATE
ltcfquery datasource"CFDB101" dbtype"ODBC"gt
UPDATE Members SET phone '7035551212'
WHERE memberNumber '1' lt/cfquerygt
20Practicum CFQUERYUPDATE
21Practicum CFOUTPUT
ltcfquery name"qryGetMembers"
datasource"CFDB101" dbtype"ODBC"gt
SELECT lastName, firstName,
memberSince FROM Members ORDER BY
memberSince lt/cfquerygt lth3gt ltcfoutput
query"qryGetMembers"gt ltspan style"color
red"gt DateFormat(memberSince,"mm/dd/yyyy")
lt/spangt firstName lastNameltbrgt lt/cfoutputgt lt
/h3gt
22Practicum CFOUTPUT
23Practicum CFLOOP
ltcfquery name"qryGetMembers"
datasource"CFDB101" dbtype"ODBC"gt
SELECT lastName, firstName,
memberSince FROM Members ORDER BY
memberSince lt/cfquerygt lth3gt ltcfloop
query"qryGetMembers"gt ltcfset memberYears
DateDiff("YYYY",memberSince,Now())gt ltcfoutputgt
firstName lastName - Member for
memberYears years. ltbrgt
lt/cfoutputgt lt/cfloopgt lt/h3gt
24Practicum CFLOOP
Thomas Jefferson - Member for 226 years. John
Adams - Member for 226 years. George Washington -
Member for 226 years.
25Practicum Caching
ltcfquery name"qryGetMembers"
datasource"CFDB101" dbtype"ODBC"
cachedwithin"CreateTimeSpan(1, 0, 0, 0)"gt
SELECT memberNumber, lastName,
firstName, email, phone,
memberSince FROM Members lt/cfquerygt
26Bonus Aqua Data Studio
- http//www.aquafold.com
- Interfaces with DB2, Informix, MySQL, Oracle,
PostgreSQL, SQL Server, SyBase, any JDBC source.
27Q A