掲示板お問い合わせランダムジャンプ



この広告は30日以上更新がないブログに表示されております。 新しい記事を書くことで広告を消すことができます。

Top Index

2014年08月15日
動的SQL文(2way-SQL)パーサーを作る
VB.NET+VB2010+.NET4

2way-SQLってなに?って方はぐぐってください(説明放棄)

で、本題。
2way-SQLはAND、OR条件が複雑なデータ検索処理を簡単に実装することができる素敵なSQLなのですが、
.NETのパーサー(2Way-SQLを解析するプログラム)ってのが単独で存在するのかしないのかよくわかりません。
Seasar2や、DBFluteの機能の一部に存在するのは知っていますが、
パーサーだけ提供されているか不明。
というわけでIDbCommandを吐くところまでしか行わない(O/Rマッピングなどはしない)、
手軽にどのプロジェクトにでもぶち込めるパーサーを作ります。

以下構文とか、ソースコードとか。
構文の説明というか、実例。

一般的な記述方法



書式… /*ds パラメータ名*/ダミー値
ダミー値はパーサーにて除外されますので、デバッグ用の値を入れておいてください。
注意点
・ダミー値は「*/」の後に続けて書くこと。スペースを入れてはダメ。
・ダミー値にスペースは入れられない。
ちなみにdsは「dynamic sql」の意で、DynamicSQL用のコメントはすべて「/*ds 」で始める必要があります。

IN句



書式には変更ないですが、パラメータ辞書(変数名:dic)に配列を入れればOK。

IF文



IF文と呼んでますが、
/*ds if パラメータ名 != null*/

/*ds end if*/
の固定書式で、パラメータ値が存在しない、または値が空の場合、条件式自体が消えます。
IF文の入れ子には対応してません。(未検証)
AND、ORなどの演算子は接頭書式でも、接尾書式でも構いませんが、どちらかに統一してください。

IF文によりWHERE句が空になってしまう可能性がある場合は、
/*ds where*/
WHERE

/*ds end where*/
としてください。
WHERE句が空になった場合、WHERE句を記述しないようにします。

ソースコードべた張り(一部StringBuilderの拡張メソッド使ってますので、そっちのソースコードはこの記事参照
面倒なら記事の先頭にソースコードアップしてますので、そっちをどうぞ。


[ 投稿者:mk3008 at 21:49 | VB.NET | コメント(0) | トラックバック(1) ]

この記事へのコメント

この記事へのトラックバック
Dynamic SQL Parser をCodeplexで公開
2way sql parser「Dynamic SQL」をcodeplexで公開しました。https://dsqlparser...
投稿者: VB.NETで作る! at 2014-09-07 11:18:45

この記事へのトラックバックURL
http://shinshu.fm/MHz/88.44/a02480/0000447712.trackback

この記事の固定URL
http://shinshu.fm/MHz/88.44/archives/0000447712.html

記事へのコメント
 
簡単演算認証: 3 x 1 + 5 =
計算の答えを半角英数字で入力して下さい。
名前: [必須]
URL/Email:
タイトル:
コメント:
※記事・コメントなどの削除要請はこちら