2007/07/15

[coldfusion]新人研修-SQL文の発行

SQL文の発行は、CFQUERYタグを使います。

<CFQUERY name="任意の名前" dataSource="administratorに登録されているデータソース">
・・・SQL・・・
</CFQUERY>

で発行することができます。

ちなみに、SELECT文の結果を、画面に表示したい場合は、CFLOOPのクエリーループを使います。
使い方は、

<CFLOOP query="CFQUERYでつけた名前">
#カラム名#
</CFLOOP>

でいけちゃいます。

また、DML文の場合は、トランザクション処理が走るので、CFQUERYの外側に、

<CFTRANSACTION action="begin">
  <CFTRY>
    <CFQUERY・・・>
    ・・・SQL文・・・
    </CFQUERY>
    <!--- エラー発生 --->
    <CFCATCH type = "Database">
      <CFTRANSACTION action="rollback" />
    </CFCATCH>
  </CFTRY>
  <!--- 無事にトランザクション完了 --->
  <CFTRANSACTION action="commit" />
</CFTRANSACTION>

というように、CFTRANSACTIONタグで括って、さらにCFRYを使ってその直下にCFQUERYタグを置くようにしましょう!!

なぜ、DML文発行時にここまでしなくちゃーいけないのかというと、エラーが発生した場合、rollbackを行い正常終了の場合、commitをかけたいからです。

cftryを入れることで、エラーが発生した場合、cfcatchでエラーが発生した場合の処理に移り、そこで、rollbackされていることがわかります。

逆に正常終了の場合、cfcatchタグをスルーしてそのまま、commitがかかっていると思います。

最初は、理屈で覚えるよりも、暗記みたいな感じで覚える方が早いかもしれないかも。

0 コメント:

コメントを投稿