Coldfusion 如何循环数据库的表?
我试图使用以下代码在数据库的表上循环得到一个错误Coldfusion 如何循环数据库的表?,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,我试图使用以下代码在数据库的表上循环得到一个错误java.lang.UnsupportedOperationException。我甚至尝试了cfloop查询和其他属性get errors复杂值无法转换为简单值。谁能告诉我该如何循环这个查询?谢谢 <cfquery name="q" datasource="datasource"> SHOW TABLES FROM datasource </cfquery> <cfloop collection ="#q#"
java.lang.UnsupportedOperationException
。我甚至尝试了cfloop查询和其他属性
get errors复杂值无法转换为简单值。谁能告诉我该如何循环这个查询?谢谢
<cfquery name="q" datasource="datasource">
SHOW TABLES FROM datasource
</cfquery>
<cfloop collection ="#q#" item="i">
#q[i]#
</cfloop>
显示数据源中的表
#q[i]#
怎么样
<cfoutput query="q">
#tables#
<cfoutput>
#桌子#
你试过了吗?它支持一种类型的“tabes”,并且应该为每个表返回一个表名、类型和备注的查询。您会收到该错误,因为cfloopcollection
需要一个结构,而不是查询对象。因此出现了“不支持操作…”错误
相反,您应该使用查询循环。根据您提供的数据库名称,生成的列名是动态的。您可以对其进行硬编码或动态访问:
<cfset colNames = listToArray(q.columnList)>
<cfoutput query="q">
<cfloop array="#colName#" index="col">
#q[col][currentRow]#
</cfloop>
<br>
</cfoutput>
您使用的是什么数据库管理系统?MySQL?您是否尝试过直接转储查询?它返回了什么吗?@SeanCoyne-我正在使用MySQL,我确实转储了它,它显示了所有的表名…表位于数据库列中的表中。。。。它不起作用。当我转储它时,除了在\u nameofdb中的表\u之外,我没有找到任何列名。。。这是一个非常棒的答案。您能告诉我如何获得所有表的列名吗?改为查询视图。要获取单个表的列,只需在
table\u NAME
而不是schema上进行筛选。ie…其中TABLE\u NAME='Some TABLE'
实际上,我把它收回。您应该同时筛选表\u名称
和表\u架构
。以防在多个数据库中存在相同的表名
。非常感谢,这太有帮助了。
<cfquery name="yourQueryName" ...>
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'YourDatabaseName'
</cfquery>
<cfoutput query="yourQueryName">
#TABLE_NAME# <br>
</cfoutput>