cfqueryparamまたはcfprocparamをコーディングする場合、cfsqltypeはオプションです。しかし、私は通常、それがコード化されているのを見ました。 cfsqltypeを指定する利点はありますか?cfsqltypeを使用していますか?
答えて
主な利点は、照会入力を照会に渡す前に、照会入力の健全性検査のレベルを上げることです。また、日付の時刻値の場合、cfsqltype = "CF_SQL_DATE"または "CF_SQL_TIMESTAMP"が指定されていると、CFはdatetime文字列を適切なデータベース形式に正しく変換すると考えています。
また、将来の開発者がコードを読むときに除外されるタイプをより明確にすることができると思います。
私はJakeさんのコメントに追加します。ほとんどのRDBMSでは、データベースは、適切な型であることを保証するために型参照を介して変数を実行する必要があります。または、暗黙的に適切な型にキャストできます。 DBは単にテーブルまたはビューに "Any Any"という変数を投げるだけではありません。実行計画に適切な型付けを組み込む必要があります。したがって、タイプを指定しない場合は、DBに「把握する」ことを求めています。
ただし、タイプを指定するときは、データ型を先取りするか事前に修飾します。エンジンは、ドライバが特定のタイプの変数を提示していることを知っており、それを直接使用するか、または直接それを派生させることができます。
セキュリティはcfqueryparamを使用する正当な理由ですが、それが唯一の理由であることに注意してください。もう1つの理由は、効率的に実行でき、理想的にはDBサーバー上の実行計画キャッシュを「ポップ」するように、正しく準備されたステートメントを作成することです。
+1。再:* ..あなたはDBを "それを把握"するように求めています。* ..そして結果はいつもあなたが意図したものではありません。暗黙の変換を避ける方が良い。 – Leigh
ありがとう、良い点。ちょうど興味のない - それはデータベースのデータ型を一致させるための余分なオーバーヘッドがかかりますか? (dbは時間を費やさなければならないので、cfsqltypeなしで実行するには少し時間がかかります) – froadie
Froadie - ある程度のオーバーヘッドがあります。あなたはそれを見ないでしょうが、私はcfsqltypeを使用しないと考えることはできません: –
- 1. rownumを使用していますか?
- 2. Wicket:PropertyResolverを使用していますか?
- 3. ウェブフォントを使用していますか?
- 4. osgi:ServiceFactoriesを使用していますか?
- 5. TypedFactoryFacilityを使用していますか?
- 6. アプリケーションフレームワークを使用していますか?
- 7. カスタムプログレスバーを使用していますか?
- 8. font-size:100.01%をまだ使用していますか、どのブラウザに使用していますか?
- 9. jQueryを使用してWCFサービスを使用しています
- 10. wsdlを使用してWebサービスを使用しています
- 11. ブラウザがどのフォントを使用していてCSSを使用しているかを確認しますか?
- 12. シンボリックリンクを使用してvimで 'gf'を使用していますか?
- 13. アクティビティを使用してダイアログを表示していますか?
- 14. eclipseを使用してモバイルデバイスをプログラミングしていますか?
- 15. DOMを使用してHTMLを追加していますか?
- 16. LDAPを使用してCNを抽出していますか?
- 17. ISNULLを使用して値を設定していますか?
- 18. linkchildfieldを使用してサブフォームをフィルタリングしていますか?
- 19. C++を使用してfastcgiを実装していますか?
- 20. コマンドラインを使用してPDFを照会していますか?
- 21. スポットライトを使用してキーワードを検索していますか?
- 22. ワーカースレッドを通してハンドラを使用していますか?
- 23. CA2000は「使用する」方法を使用していますが、try/finallyを使用していません
- 24. NSDictionaryキーとしてNSViewインスタンスを使用していますか?
- 25. ActionScriptはJavaScriptライブラリを使用してサポートしていますか?
- 26. メモリマップファイルをスワップファイルとして使用していますか?
- 27. project_name/node_modulesをシンボリックリンクとして使用していますか?
- 28. アクティビティをプリファレンスアクティビティとして使用していますか?
- 29. はGAをアソシエートとして使用していますか?
- 30. グローバルオブジェクトをCOMクラスファクトリとして使用していますか?
CFは真偽値をCF_SQL_BIT(1または0)に変換し、任意の数値をCF_SQL_INT(丸め)に変換します。 – Henry
よく表現された答えをありがとう!私はこれらが理由のいくつかであると考えましたが、文書を見つけることができず、これは非常に明確で簡潔です – froadie