SQLクエリ文字列は,文字列リソースファイルに記述したら便利です

【追記】

最近は,リソースファイルにSQLを書くのをやめて
別立てのテキストファイルを準備し,これを「埋め込まれたリソース」として,EXE内に取り込んで
C#コードから,引っ張りだす,ってことをやってます

こっちのほうが,長いSQL文は楽です

詳しくはこちら

SQLクエリ文字列は,埋め込みリソース化するテキストファイルを利用すると,より便利です@ぎんゆぅ~




機械制御やったり,モバイルやってりと,日々で仕事内容が変わるオイラ
今日は,SQLやってます@怪しい解析ソフト向け

C#にてドッカンドッカン,記述しておりますが
SQLクエリ文字列の扱いって,けっこう面倒...
[SQL]
select * from TestTable
where ID = 100;
[/SQL]

みたいなクエリを,C#中のコードに記述すると

string sql;
sql +=  "select * from TestTable ";
sql +=  "where ID = 100";
な,感じになりますねぇ...

いや,クエリが小さければ,これでもいいけど
副クエリを3段も4段も重ねて,クエリの行数20行とか30行とかになってくると,さすがに面倒...

しかも,クエリ上に不具合あったりしたときとか,SQLのクエリデバッガに掛けるときは

C#の構文を外して行き
クエリデバッガにコピペしてテスト
修正終わったら,また↑みたいに,C#の構文で組み立てなおす

の繰り返しですかねぇ??




ってところで,文字列リソースファイルが登場 :mrgreen:

こやつ,文字列に関してけっこう自由にプログラム内から参照できます

やり方的には

    1.ソリューションエクスプローラ,ターゲットのプロジェクトにて,右クリック~追加~新規追加
    2.アセンブリリソースファイルを選択.拡張子はresxになりますです
    3.このアセンブリリソースファイルを開くと,”名前”,”値”,”コメント”欄が出てきます

名前は,C#コードから参照する名称になります
値にはSQLクエリ文字列をドカンと丸ごとコピペ.改行とかも大丈夫です
コメントは適時にて

この定義された,文字列リソースを参照するには

string sql;
sql = global::文字列リソース.sqldef.sql1;
みたいに,global::で始めて
“既定の名前空間”.”アセンブリリソースファイル”.”アセンブリリソースファイル内の名前”
で,OKです

これ,SQLにバインドパラメータを渡すときの構築も,けっこう楽になるかもですよん 😉

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください