karlley's tech blog

学習メモや記録とか

静的プレースホルダと動的プレースホルダの違い

静的プレースホルダと動的プレースホルダの違いが分からなかったので調べました。

結論

静的プレースホルダと動的プレースホルダは次のような違いがある。

他にも細かい部分が異なるので詳細は後述します。

プレースホルダとは?

プレースホルダによる組み立てとは、パラメータ部分を「?」などの記号で示しておき、後に、そこへ実際 の値を機械的な処理で割り当てる方法です。

パラメータ部分を示す記号「?」のことをプレースホルダと呼び、そこへ実際の値を割り当てるこ とを「バインドする」と呼びます。プレースホルダのことを「バインド変数」と呼ぶこともあります。

静的プレースホルダ

プレースホルダのままの SQL 文をデータベースエンジン側にあらかじめ送信して、実行前に、 SQL 文の構文解析などの準備をしておく方式です。SQL 実行の段階で、実際のパラメータの値をデータ ベースエンジン側に送信し、データベースエンジン側がバインド処理します。

  • Prepared Statement
  • SQL組み立てはDB側で行う。
  • SQLがあとから変化しないのでセキュリティ面では一番安全。

動的プレースホルダ

動的プレースホルダは準備された文(Prepared Statement)とは異なり、プレースホルダを利用するもの の、パラメータのバインド処理をデータベースエンジン側で行うのではなく、アプリケーション側のライブラ リ内で実行する方式です。

まとめ

整理して初めて自分が行おうとしていた実装方法が「動的プレースホルダ」だったのだと理解できました。 静的プレースホルダはなんだか難しそうな印象...また必要になったら調べてみます。

参照

安全なSQLの呼び出し方

プリペアドステートメントとは - 意味をわかりやすく - IT用語辞典 e-Words