Coldfusion 前面已经提到的方法,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个where 1=0子句。否则,查询将返回表中的所有记录,这是对带宽的浪费,因为数据从未被使用过
Coldfusion 前面已经提到的方法,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个where 1=0子句。否则,查询将返回表中的所有记录,这是对带宽的浪费,因为数据从未被使用过,coldfusion,Coldfusion,前面已经提到的方法,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个where 1=0子句。否则,查询将返回表中的所有记录,这是对带宽的浪费,因为数据从未被使用过。请注意,上面的英镑符号都是不需要的。这只是对前面提到的几种方法的一个小小的变化,恕我直言,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个where
前面已经提到的方法,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个
where 1=0
子句。否则,查询将返回表中的所有记录,这是对带宽的浪费,因为数据从未被使用过。请注意,上面的英镑符号都是不需要的。这只是对前面提到的几种方法的一个小小的变化,恕我直言,这不是最好的方法。大多数企业数据库提供了通过视图识别现有列的更高效的选项。如果出于某种原因,您的数据库不支持这些视图或类似的内容,至少添加一个where 1=0
子句。否则,查询将返回表中的所有记录,这是对带宽的浪费,因为数据从未被使用过。请注意,上面的英镑符号都不需要。
<cfquery name="qSelect" datasource="#dbname#">
select Top 0 * from Elements
</cfquery>
<cfif not ListFindNoCase(qSelect.columnlist,"idLang")>
<cfquery name="qAlterTable" datasource="#dbname#" dbtype="ODBC">
ALTER TABLE Elements ADD idLang varchar(200) NULL
</cfquery>
</cfif>
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName'
AND COLUMN_NAME = 'idLang'
<cftry>
<cfquery name="qAlterTable" datasource="#dbname#" dbtype="ODBC">
ALTER TABLE
Elements
ADD idLang varchar(200) NULL
</cfquery>
<cfcatch type = "database">
<cfoutput>#cfcatch.message# - #cfcatch.details#</cfoutput>
</cfcatch>
</try>
<cfdbinfo datasource="votethisway.com" name="myColumns" type="columns" table="tblPoll" pattern="idLang">
<cfdump var="#myColumns#" label="myColumns">
<cffunction access="public" name="tableColumnExists" output="no" returntype="boolean" description="returns true if a table column exists" verifyclient="no" securejson="false">
<cfargument name="datasource" type="string" required="yes" hint="name of the datasource">
<cfargument name="table" type="string" required="yes" hint="name of the table">
<cfargument name="column" type="string" required="yes" hint="name of the column">
<!---initialize private variables--->
<cfset var local = StructNew()>
<cftry>
<cfdbinfo datasource="#arguments.datasource#" name="local.qryColumns" type="columns" table="#arguments.table#" pattern="#arguments.column#">
<cfcatch type="Database">
<cfreturn false>
</cfcatch>
</cftry>
<cfif local.qryColumns.RecordCount>
<cfreturn true>
</cfif>
<cfreturn false>
</cffunction>
<cfquery name="my_Recordset" datasource="my_Datasource">
SELECT * FROM my_Table
</cfquery>
<CFIF NOT ISDEFINED('my_Recordset.my_Column')>
<!--- create column because it doesnt exist --->
<cfelse>
<!--- drop or update column because it exist --->
</cfif>
<cfquery name="my_Recordset" datasource="my_Datasource">
SELECT * FROM my_Table
</cfquery>
<cfset myList = #my_Recordset.columnList#>
<cfset mySearchResult = #ListContains(myList, "my_Column")#>
<CFIF mySearchResult is 0>
<!--- create column because it doesnt exist --->
<cfelse>
<!--- drop or update column because it exist --->
</cfif>
QueryKeyExists(qSelect, "idLang")