これは、必要以上に複雑な方法です。どのように私は決して知ることができない1つのテーブルに96の列を持っている世界でどのように45を選択するには、単にselect文に45の列を打ち込む必要があるでしょう。
ここに、SQLの外観のサンプルがあります。当然のことながら、私は45列を入力するつもりはないが、あなたのアイデアを得る:
SELECT FirstName, LastName, Age, [keep going to 45] FROM tblUsers
私が対処したいと思います他の問題は、あなたのSQL文を実行している方法です。文字列変数を1つのSQL文字列に連結してきたことは決してありません。少なくとも、パラメータ化されたクエリを使用していることを確認してください。しかし、いつかEntity FrameworkやLINQ to SQLを調べることをお勧めします。
SqlCommand scomm = new SqlCommand("UPDATE tblUsers SET FirstName='" + firstName + "' WHERE UserID='" + userId + "'");
その^^^は非常に悪いです。ユーザーが卑劣で、彼のファーストネームを作ることにした場合、どうなるか考えてみてください。Harry' AND Admin='true
あなたは、ああ、よく私はちょうど私のすべての変数のfirstName = firstName.Replace("'","''");
をやる」、と思うかもしれないあなたは、私が個人的に来ることを行う場合にパンチのようにクエリをパラメータ:。。
SqlCommand scomm = new SqlCommand("UPDATE tblUsers SET [email protected]FirstName WHERE [email protected]");
scomm.Parameters.Add(new SqlParameter("FirstName", firstName));
scomm.Parameters.Add(new SqlParameter("UserID", userId));
^^^それははるかに良いと等しいですあなたは今まであなたが持っているテーブルの再作業そのモンスターにチャンスを得れば。
EDITまた、自分のエンティティ(テーブル)にフィールドのサブセットをリファクタリングし、参照IDを経由してそれらをリンクしてみてください。例えば、 [tlbUsers]というテーブルがあり、特定のユーザーに関する情報が含まれているとします。このように:
[tlbUsers]
UserID
FirstName
LastName
Age
Username
StreetAddress
City
State
ZipCode
Country
Phone
リファクタリングを考慮して、関連する値に独自のテーブルがあるようにします。このユーザーテーブルからすべてのアドレス情報を取得し、それをtlbAddressesというテーブルに入れることができます。データを取り込む際の処理が簡単になるだけでなく、データベースのスペースを節約できる可能性があります。たとえば、HarryとSallyの両方が同じ家に住んでいる場合、同じアドレスレコードを参照することができます。
[tlbUsers]
FirstName
LastName
Age
Username
AddressID
Phone
[tlbAddresses]
AddressID
Street
City
State
ZipCode
Country
通常のselect field1、field2、...をtable1から使用するとどうなりますか?特にそれがいい理由がない場合は、それはより複雑にしないでください –
それは私だけかもしれませんが、可能な限り、ストアドプロシージャを避けるべきではありませんか?また、必要な列を選択するだけではどうですか?あなたのUIがどのようなものか、どのような自由があるかによって、一度に表示される情報の総量を制限するために再編成することができます(複雑なUIを見るのは本当に好きではありません) – dSebastien
@dSebastien - 必要に応じてストアドプロシージャを使用する必要があります。彼らはなぜそうでなければ存在するでしょうか? – Oded