[Seasar-user:18452] [S2JDBC]バインド変数と埋め込み変数コメントの使い分け

坂本千夏 [E-MAIL ADDRESS DELETED]
2009年 9月 7日 (月) 02:45:38 JST


はじめまして。さかもとです。

バインド変数と埋め込み変数コメントの違いについて、
S2JDBCのドキュメントを読んで、以下のように理解しました。

-----------------
バインド変数:PreparedStatment  を使った変数に置き換える(SQLインジェクション対策OK)
埋め込み変数コメント:そのままSQLを構成する一部の文字列として使用される(SQLインジェクション対策NG。ただし、; は対策している。)
-----------------

ただ、具体的にどういう場合に埋め込み変数コメントを使うべきなのか、よくわかっていません。
ドキュメントでは以下のように orderBy に埋め込み変数コメントが使われていますが、

-----------------
order by  句をパラメータで変えたい場合は、 /*$orderBy*/と指定します。
select * from employee order by /*$orderBy*/id
-----------------

orderBy の対象列が複数の場合にカンマが含まれるので、バインド変数は使えなくなるからでしょうか?ただ、実際に試してみたところ、バインド変数を使用してもエラーにならないようです(正しくソートされていなかったかもしれませんが・・・)
また、条件によって order by 句の有無が変わる場合は、以下のように記述すべきでしょうか?

select * from employee /*$orderBy*/

ただ、これもバインド変数を使って、

select * from employee /*orderBy*/

と書いても動作しているようでした。
根本的に間違っているかもしれませんが、ご教授よろしくお願いします。


Seasar-user メーリングリストの案内