lunedì, agosto 18, 2008
Oggi ColdFusion.
Ah quanto fastidio...
Mai provato a fare una query in ColdFusion 7 senza avere prima definito un datasource?
Ripeto: ah quanto fastidio...
Ma per fortuna è fattibile, attraverso JDBC e un uso oculato di createObject.
Nella stringa
si può sostituire postgresql con un altro driver (ad esempio odbc).
Si badi che il codice è "sporco", ma funziona.
Mai provato a fare una query in ColdFusion 7 senza avere prima definito un datasource?
Ripeto: ah quanto fastidio...
Ma per fortuna è fattibile, attraverso JDBC e un uso oculato di createObject.
<cffunction name="pgQuery" output="false" returnType="any">
<cfargument name="server" required="yes" type="string">
<cfargument name="db" required="yes" type="string">
<cfargument name="login" required="yes" type="string">
<cfargument name="password" required="yes" type="string">
<cfargument name="sql" required="yes" type="string">
<cfargument name="queryName" required="yes" type="string">
<cfargument name="attendiResultSet" required="no" default="true" type="boolean">
<cftry>
<!--- la classe è definita? --->
<cfif NOT IsDefined("JDBCDriver")>
<cfset JDBCDriver=createObject("java","java.lang.Class").forName("org.postgresql.Driver").newInstance()>
<cfset DriverManagerClass=createObject("java","java.sql.DriverManager")>
</cfif>
<cfset strURL = "jdbc:postgresql://#server#/#db#">
<!--- Mi connetto al DB --->
<cfset dbConnection=DriverManagerClass.getConnection(strURL, login, password)>
<cfset st = dbConnection.createStatement()>
<cfif attendiResultSet eq "true">
<cfset resultSet = st.executeQuery(sql)>
<cfscript>
"#queryName#" = CreateObject("java", "coldfusion.sql.QueryTable").init(resultSet);
resultSet.close(); st.close(); dbConnection.close();
return "#queryName#";
</cfscript>
<cfelse>
<cfset st.execute(sql)>
<cfscript>
st.close(); dbConnection.close();
</cfscript>
<cfreturn QueryNew("")>
</cfif>
<cfcatch>
<cfset InviaEmailErrore("pgQuery #server# - #db# - #sql#",cfcatch)>
<cfreturn QueryNew("")>
</cfcatch>
</cftry>
</cffunction>
Nella stringa
Si badi che il codice è "sporco", ma funziona.
Etichette: ColdFusion