Listing 1 The select method

<cffunction name="Select" access="public" returntype="Query">
 <cfargument name="CategoryID" type="string" required="true">
 <cfargument name="dsn" type="string" required="true">

 <cfset var qGetCat = "">

 <cfquery name="qGetCat" datasource="#arguments.dsn#">
  select *
  from RSSCategories
  where RSSCategories.CategoryID = 
    <cfqueryparam value="#arguments.CategoryID#" cfsqltype="cf_sql_varchar">
 </cfquery>

 <cfreturn qGetCat>
</cffunction>

Listing 2 The insert method

<cffunction name="Insert" access="public" returntype="Void">
 <cfargument name="CategoryID" type="string" required="true">
 <cfargument name="Category" type="string" required="true">
 <cfargument name="dsn" type="string" required="true">

 <cfset var qUpdateCat = "">

 <cfquery name="qUpdateCat" datasource="#arguments.dsn#">
  insert into RSSCategories(CategoryID, Category)
  values (
   <cfqueryparam value="#arguments.CategoryID#" cfsqltype="cf_sql_varchar">,
   <cfqueryparam value="#arguments.Category#" cfsqltype="cf_sql_varchar"> )
 </cfquery>

</cffunction>

Listing 3 The update method

<cffunction name="Update" access="public" returntype="void">
 <cfargument name="CategoryID" type="string" required="true">
 <cfargument name="Category" type="string" required="true">
 <cfargument name="dsn" type="string" required="true">

 <cfset var qUpdateCat = "">

 <cfquery name="qUpdateCat" datasource="#arguments.dsn#">
  update RSSCategories 
  set Category = 
        <cfqueryparam value="#arguments.Category#" cfsqltype="cf_sql_varchar">
  where CategoryID = 
             <cfqueryparam value="#arguments.CategoryID#" cfsqltype="cf_sql_varchar">
 </cfquery>

</cffunction>

Listing 4 The RSSCategory init method

<cffunction name="Init" access="public" returntype="Boolean">
 <cfargument name="CategoryID" type="string" required="true">
 <cfargument name="dsn" type="string" required="true">
 <cfargument name="DAOType" type="String" required="false" 
                      default="RSSCategory_DAO_SQLServer">

 <cfset var qGetCat = "">

 <cfset variables.instance.DAO =  createobject('component', '#arguments.DAOType#')>

 <cfset qGetCat = variables.instance.DAO.select(arguments.CategoryID , arguments.dsn)>

 <cfif qGetCat.recordcount is 0>
 <cfreturn false>
 </cfif>

 <cfscript>
  variables.instance.CategoryID = qGetCat.CategoryID;
  variables.instance.Category = qGetCat.Category;
</cfscript>

<cfreturn true>

</cffunction>

Listing 5 The RSSCategory commit method

<cffunction name="Commit" access="public" returntype="void">
 <cfargument name="dsn" type="string" required="true">

 <cfset var qUpdateCat = "">

 <cfif variables.instance.CategoryID is "">
  <cfset variables.instance.CategoryID = createuuid()>
  <cfset variables.instance.DAO.insert(variables.instance.CategoryID,
     variables.instance.Category, arguments.dsn)>

 <cfelse>
  <cfset variables.instance.DAO.update(variables.instance.CategoryID,
     variables.instance.Category, arguments.dsn)>
</cfif>

</cffunction>