Creates an empty query (query object).


An empty query with a set of named columns, or an empty query.


Query functions

Function syntax

QueryNew(columnlist [, columntypelist[, rowData]])


ColdFusion MX 7: Added columntypelist parameter.

ColdFusion 10: Added rowData parameter.

See also

QueryAddColumnQueryAddRowQuerySetCellManaging data types for columns in Query of Queries user guide in the Developing ColdFusion Applications





Comma-delimited list of column names, or an empty string.


(Optional) Comma-delimited list specifying column data types. ColdFusion generates an error if the data you add to the column is not of this type, or if it cannot convert the data to this type. The following data types are valid:

  • Object: Java Object. This is the default column type.
  • Integer: 32-bit integer
  • BigInt: 64-bit integer
  • Double: 64-bit decimal number
  • Decimal: Variable length decimal, as specified by java.math.BigDecimal
  • VarChar: String
  • Binary: Byte array
  • Bit: Boolean (1=True, 0=False)
  • Time: Time
  • Date: Date 
  • Timestamp: Time and date information

(Optional) Specifies data to add to the new query. Can be one of:

  • A struct with key/value pairs representing a single row of data, where the key is the column name and the value is the data;
  • an array of structs as per above, for adding multiple rows of data;
  • an array of arrays where each inner array are values for a row of data, in the same order as the columns are specified in the columntypelist parameter.

See "Usage" for examples.


If you specify an empty string in the columnlist parameter, use the QueryAddColumn function to add columns to the query.Adobe recommends that you use the optional columntypelist parameter. Without this parameter, ColdFusion must try to determine data types when it uses the query object in a query of queries. Determining data types requires additional processing, and can result in errors if ColdFusion does not guess a type correctly.Enhancements in ColdFusion 10 lets you initialize the query data. You can specify a struct, an array of structs, or arrays with single or multiple dimensions to initialize the query as shown in the following example:

myQuery1 = queryNew("id,name","Integer,Varchar", {id=1,name="One"}); 
myQuery2 = queryNew("id,name","Integer,Varchar", 
myQuery3 = queryNew("id,name","Integer,Varchar", [ [1,"One"], [2,"Two"], [3,"Three"] ]);


The following example creates a query object.

    myQuery = queryNew("id,name,amount","Integer,Varchar,Integer", 
    writeOutput("The new query is:")


Query object
Query object


The following example uses the QueryNew function to create an empty query with three columns. It populates two rows of the query and displays the contents of the query object and its metadata.

<!--- Create a new three-column query, specifying the column data types ---> 
<cfset myQuery = QueryNew("Name, Time, Advanced", "VarChar, Time, Bit")> 

<!--- Make two rows in the query ---> 
<cfset QueryAddRow(MyQuery, 2)> 

<!--- Set the values of the cells in the query ---> 
<cfset QuerySetCell(myQuery, "Name", "The Wonderful World of CMFL", 1)> 
<cfset QuerySetCell(myQuery, "Time", "9:15 AM", 1)> 
<cfset QuerySetCell(myQuery, "Advanced", False, 1)> 
<cfset QuerySetCell(myQuery, "Name", "CFCs for Enterprise Applications", 2)> 
<cfset QuerySetCell(myQuery, "Time", "12:15 PM", 2)> 
<cfset QuerySetCell(myQuery, "Advanced", True, 2)> 

<h4>The query object contents</h4> 
<cfoutput query = "myQuery"> 
#Name# #Time# #Advanced#<br> 
<h4>Using individual query data values</h4> 
<cfoutput>[2]# is at #MyQuery.Time[2]#<br> 
<h4>The query metadata</h4> 
<cfset querymetadata=getMetaData(myQuery)> 
<cfdump var="#querymetadata#">

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License  Twitter™ and Facebook posts are not covered under the terms of Creative Commons.

Legal Notices   |   Online Privacy Policy