[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 メーリングリストの案内