QueryNew(columnlist [, columntypelist[, rowData]])
履歴
ColdFusion(2018 リリース)アップデート 5:クエリーオブジェクトに構造体の配列として行を挿入できます。詳しくは、QueryNew 関数の機能強化を参照してください。
ColdFusion MX 7: columntypelist パラメーターが追加されました。
ColdFusion 10:rowData パラメーターが追加されました。
関連項目
QueryAddColumn、QueryAddRow、QuerySetCell。『ColdFusion アプリケーションの開発』のクエリーオブクエリーのユーザーガイドの列のデータ型の管理
パラメーター
パラメーター |
説明 |
---|---|
columnlist |
カンマで区切った列名のリスト、または空の文字列を指定します。 |
columntypelist |
(オプション)列のデータ型を指定する、カンマで区切ったリストです。列に追加したデータがこの型ではない場合、またはデータをこの型に変換できない場合、ColdFusion ではエラーが生成されます。次のデータ型が有効です。
|
rowData | (オプション)新しいクエリーに追加するデータを指定します。次のいずれかを指定できます。
例については、「使用方法」を参照してください。 |
使用方法
空文字列を columnlist パラメーターに指定する場合は、QueryAddColumn 関数を使用してクエリーに列を追加します。 アドビ では、オプションの columntypelist パラメーターを使用することをお勧めします。このパラメータを使用しない場合、ColdFusion ではクエリーオブクエリー内のクエリーオブジェクトを使用するときに、データ型を判別する必要があります。データ型を判別するには追加処理が必要であり、ColdFusion がデータ型を正しく推測しない場合、エラーが発生する可能性があります。 ColdFusion 10 での機能強化により、 クエリーデータを初期化できるようになりました。次の例に示すように、構造体、 構造体の配列、 1 次元または多次元の配列のいずれかを指定して、クエリーを初期化できます。
myQuery1 = queryNew("id,name","Integer,Varchar", {id=1,name="One"}); myQuery2 = queryNew("id,name","Integer,Varchar", [ {id=1,name="One"}, {id=2,name="Two"}, {id=3,name="Three"} ]); myQuery3 = queryNew("id,name","Integer,Varchar", [ [1,"One"], [2,"Two"], [3,"Three"] ]);
<cfscript> myQuery = queryNew("id,name,amount","Integer,Varchar,Integer", [ {id=1,name="One",amount=15}, {id=2,name="Two",amount=18}, {id=3,name="Three",amount=32} ]); writeOutput("The new query is:") writeDump(myQuery) </cfscript>
出力
<!--- 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> </cfoutput><br> <br> <h4>Using individual query data values</h4> <cfoutput> #MyQuery.name[2]# is at #MyQuery.Time[2]#<br> </cfoutput><br> <br> <h4>The query metadata</h4> <cfset querymetadata=getMetaData(myQuery)> <cfdump var="#querymetadata#">
QueryNew 関数の機能強化
ColdFusion(2018 リリース)アップデート 5 では、クエリーオブジェクトへのデータ設定方法に関して QueryNew 関数の機能が強化されています。
以前のバージョンの ColdFusion では、QueryNew 関数のパラメーターを定義する際に、クエリーオブジェクトの列、列のデータ型、行データの順に定義する必要がありました。
次に例を示します。
<cfscript> q=queryNew("foo,bar", "", [{foo="foo"},{bar="bar"},{foo="foo1",bar="bar1"}]) writedump(q) </cfscript>
このアップデートでは、クエリーオブジェクトに構造体の配列として行を挿入できます。クエリーオブジェクトは、構造体のキーを列名として解釈し、適切なデータ型を想定します。
次に例を示します。
<cfscript> myquery=QueryNew([ {"Id":101,"Name":"John Adams","Paid":FALSE}, {"Id":102,"Name":"Samuel Jackson","Paid":TRUE}, {"Id":103,"Name":"Gal Gadot","Paid":TRUE}, {"Id":104,"Name":"Margot Robbie","Paid":FALSE} ]) writedump(myquery) </cfscript>
上記の例では、構造体のキー Id、Name、Paid がクエリーオブジェクトの列になり、構造体の値がクエリーオブジェクトの行の値になることがわかります。
また、名前付きパラメーターを使用して、クエリーオブジェクトを作成することもできます。
次に例を示します。
data パラメーターを使用して、クエリーオブジェクトの値を構造体の配列として設定します。
<cfscript> mydata = queryNew(data=[ {"id":1,"title":"Hello World"}, {"id":2,"title":"How are you"} ]); writeDump(mydata); </cfscript>
columnNames パラメーターを使用して、クエリーオブジェクトの列を作成します。
<cfscript> data = queryNew(columnNames="Year,Salary") writeDump(data); </cfscript>