|
分類:[C#]
>SqlDataReader executeSQL(コネクション, SQL文) { >あーしてこーして ExecuteReader() を返す。 >}
はい、SQLがパラメータを使用しない場合はそれで問題ないと私も思います。 でも業務に限らず、DB絡む時って往々にしてパラメータ つまりSQLを動的に生成しますよね? 「SELECT name FROM test WHERE name = @name」 仮に上記のSQLを渡すと、そのexecuteSQL関数内で@nameに 実際の値を割り当てる処理が必要かと思います。 いつも上記のSQLであれば、固定で >SqlDataReader executeSQL(コネクション, SQL文, @nameにあたる文字列とか) { >@name = 第3引数をする処理 >あーしてこーして ExecuteReader() を返す。 >} という関数にすればよいと思いますが、これだとこのSQL専用になってしまいますよね? つまりこの関数に 「SELECT name FROM test WHERE name = @name AND pass = @pass」 を渡しても正しく動作しないという意味です。
パラメータ割り当て済のSqlCommandを引数にして呼び出してもいいのですが こういうパラメータの割り当てが一番冗長というか、作業的でながったらしくなっているので そういうのは何かしら汎用的につくれば、関数内で全て完結する仕組みができるのかな? と思っていました。 ただ私には知識と技術が無くて思いつかないだけで。
でも中博俊さんの意見を聞いて、 DB関連に関しては、共通化どうとかは気にしなくて 極端に言えば、1GridViewにつき、1DB関連処理で作成してしまう(解釈あってるでしょうか?) という方法も結構普通に使われてるようで安心しました。
先入観のようなものですが、プログラム=再利用・共通化 みたいなものがあって、なんかどうしてもまとめてできないかな〜と考えてしまうので。 そしてまとまってないと「なんだこの冗長なプログラムは」とか言われそうで・・・
なにが正しいとかっていうのはないとは思いますので、回答というか 「俺はこうしてるよ」っていう、経験談がとても参考になりました。
私は今うまく共通化するような処理にできなかったので、全部それぞれ書いてるんですが 実はそれが非常識で、「いや、普通共通化するだろ」とか言われたらどうしようかとびくびくしていました。 .NETを扱える人が社内に自分しかいなく、評価できるような人がいませんので ベテランの方々の声が聞けるととても頼もしいです。
|