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”,并且应该为每个表返回一个表名、类型和备注的查询。

您会收到该错误,因为cfloop
collection
需要一个结构,而不是查询对象。因此出现了“不支持操作…”错误

相反,您应该使用查询循环。根据您提供的数据库名称,生成的列名是动态的。您可以对其进行硬编码或动态访问:

   <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>