There is a workaround for this using java objects. I'm using the meta data from a jdbc connection. Below I'm using getColumnCount & getColumnLabel. I also tried dump(rsmd.isNullable(1)); and it returns 0 or 1. I added extra code to the udf to demonstrate this.
So, is what I'm demonstrating here what someone is after?
And Sean, isn't there a way to convert a coldfusion recordset into a java recordset? I haven't even tried to look, but I figured you might already know. Thanks!
<cffunction name="dump">
<cfdump var="#Arguments[1]#">
</cffunction>
<cfscript>
driverClass = "macromedia.jdbc.sqlserver.SQLServerDriver";
serverName = "localhost";
serverPort = "1433";
dbname = "db";
userName = "cfusion";
password = "password";
try {
Class = createObject("java"," java.lang.Class").forName(driverClass);
DriverManager = createObject("java", "java.sql.DriverManager");
conn = DriverManager.getConnection("jdbc:macromedia:sqlserver://" & serverName & ":" & serverPort & ";databaseName=" & dbname, userName, Password);
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from program");
<cfdump var="#Arguments[1]#">
</cffunction>
<cfscript>
driverClass = "macromedia.jdbc.sqlserver.SQLServerDriver";
serverName = "localhost";
serverPort = "1433";
dbname = "db";
userName = "cfusion";
password = "password";
try {
Class = createObject("java"," java.lang.Class").forName(driverClass);
DriverManager = createObject("java", "java.sql.DriverManager");
conn = DriverManager.getConnection("jdbc:macromedia:sqlserver://" & serverName & ":" & serverPort & ";databaseName=" & dbname, userName, Password);
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from program");
// This could be made easier to use the object below instead of the udf, but the udf is being used for example purposes.
// newQuery = CreateObject("java", "coldfusion.sql.QueryTable").init(rs);
// dump(newQuery);
// dump(newQuery);
dump(ResultSettoQuery(rs));
stmt.Close();
conn.Close(); // clean up.
}
catch (any e) {
WriteOutput("Error!<br />");
dump(e.message);
if(IsDefined("stmt")) stmt.Close();
if(IsDefined("conn")) conn.Close();
}
stmt.Close();
conn.Close(); // clean up.
}
catch (any e) {
WriteOutput("Error!<br />");
dump(e.message);
if(IsDefined("stmt")) stmt.Close();
if(IsDefined("conn")) conn.Close();
}
function ResultSettoQuery(rs) {
var rsmd = rs.getMetaData();
var colCnt = rsmd.getColumnCount();
var colList = "";
var i = 1;
for(i=1;i lte colCnt;i=IncrementValue(i)) {
colList = ListAppend(colList, rsmd.getColumnLabel(i), ",");
WriteOutput("<strong>" & ListGetAt(colList, i) & ":</strong><br />");
WriteOutput("IsNullable: " & rsmd.isNullable(i) & "<br />");
WriteOutput("isAutoIncrement: " & rsmd.isAutoIncrement(i));
WriteOutput('<br /><br />');
}
returnQuery = QueryNew(colList);
while(rs.Next()) {
QueryAddRow(returnQuery);
for(i=1;i lte colCnt;i=IncrementValue(i)) {
QuerySetCell(returnQuery, ListGetAt(colList, i), rs.getString (ListGetAt(colList, i)));
}
}
return returnQuery;
}
</cfscript>
var rsmd = rs.getMetaData();
var colCnt = rsmd.getColumnCount();
var colList = "";
var i = 1;
for(i=1;i lte colCnt;i=IncrementValue(i)) {
colList = ListAppend(colList, rsmd.getColumnLabel(i), ",");
WriteOutput("<strong>" & ListGetAt(colList, i) & ":</strong><br />");
WriteOutput("IsNullable: " & rsmd.isNullable(i) & "<br />");
WriteOutput("isAutoIncrement: " & rsmd.isAutoIncrement(i));
WriteOutput('<br /><br />');
}
returnQuery = QueryNew(colList);
while(rs.Next()) {
QueryAddRow(returnQuery);
for(i=1;i lte colCnt;i=IncrementValue(i)) {
QuerySetCell(returnQuery, ListGetAt(colList, i), rs.getString (ListGetAt(colList, i)));
}
}
return returnQuery;
}
</cfscript>
On 10/25/05, Sean Corfield <[EMAIL PROTECTED]> wrote:
On 11/17/04, Daniel Short <[EMAIL PROTECTED]> wrote:
> Now this I'm interested in. I've tried using the getMetaData method, and all
> it's corresponding properties and methods with little luck. In fact the
> isXXX (isNullable, isAutoIncrement etc) are totally broken in CFMX, as I
> pointed out to several MM engineers at MAX this year :)
There is an enhancement request logged (61380) to add this
functionality which will be considered for a future release. Currently
the only documented functionality for query metadata is: name,
typeName and isCaseSensitive.
--
Sean A Corfield -- http://corfield.org/
Got frameworks?
"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood
----------------------------------------------------------
You are subscribed to cfcdev. To unsubscribe, send an email to [email protected] with the words 'unsubscribe cfcdev' as the subject of the email.
CFCDev is run by CFCZone ( www.cfczone.org) and supported by CFXHosting (www.cfxhosting.com).
CFCDev is supported by New Atlanta, makers of BlueDragon
http://www.newatlanta.com/products/bluedragon/index.cfm
An archive of the CFCDev list is available at www.mail-archive.com/[email protected]
----------------------------------------------------------
You are subscribed to cfcdev. To unsubscribe, send an email to [email protected] with the words 'unsubscribe cfcdev' as the subject of the email.
CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting (www.cfxhosting.com).
CFCDev is supported by New Atlanta, makers of BlueDragon
http://www.newatlanta.com/products/bluedragon/index.cfm
An archive of the CFCDev list is available at www.mail-archive.com/[email protected]
