0

where句として機能する文字列を作成するにはどうすればよいですか? 現時点では、私はこのようにしています:

string strquery = "select * from tbl_DR_data ";
string strq2 = "where [Year 1]='" + DropDownList1.SelectedItem.Text + "'and Product='" + DropDownList2.SelectedItem.Text +
                "'and Media='" + DropDownList3.SelectedItem.Text + "'and Publication='" + DropDownList4.SelectedItem.Text + "'and Genre='" + DropDownList5.SelectedItem.Text +
                "'and Month='" + DropDownList6.SelectedItem.Value + "'and Section='" + DropDownList7.SelectedItem.Text + "'";
string str3 = strquery + strq2;

ただし、問題は、すべてのドロップダウン リストに値が含まれている必要があることです。init内でどのドロップダウンに値があるかに従って、whereステートメントを作成できるようにしたいと考えています。したがって、例の DDL1 と DDL4 には値がありますが、他のすべてのドロップダウンが含まれているわけではありません。

どうすればこれを行うことができますか??

4

3 に答える 3

0
string strq2 = "where '";
if(!string.IsNullOrEmpty(DropDownList1.SelectedItem.Text))
strq2 = strq2 + "[Year 1]='" + DropDownList1.SelectedItem.Text + " and ";
if(!string.IsNullOrEmpty(DropDownList2.SelectedItem.Text))
strq2 = strq2 + "Product='" + DropDownList2.SelectedItem.Text+ " and ";
if(!string.IsNullOrEmpty(DropDownList3.SelectedItem.Text))
strq2 = strq2 + "Media='" + DropDownList3.SelectedItem.Text+ " and ";
if(!string.IsNullOrEmpty(DropDownList4.SelectedItem.Text))
strq2 = strq2 + "Publication='" + DropDownList4.SelectedItem.Text+ " and ";
if(!string.IsNullOrEmpty(DropDownList5.SelectedItem.Text))
strq2 = strq2 + "Genre='" + DropDownList5.SelectedItem.Text+ " and ";
if(!string.IsNullOrEmpty(DropDownList6.SelectedItem.Value))
strq2 = strq2 + "Month='" + DropDownList6.SelectedItem.Value+ " and ";
if(!string.IsNullOrEmpty(DropDownList7.SelectedItem.Value))
strq2 = strq2 + "Section='" + DropDownList7.SelectedItem.Value+ " and ";
strq2 = strq2.Remove(strq2.Length - 5);
于 2013-05-17T15:12:51.310 に答える
0

SqlParameterオブジェクトを学習して使用する必要があります。

string strq2 = "WHERE 1=1";
if(!string.IsNullOrEmpty(DropDownList1.SelectedItem.Text))
strq2 += " AND [Year 1]=@Year1";
if(!string.IsNullOrEmpty(DropDownList2.SelectedItem.Text))
strq2 += " AND [Product]=@Product";
if(!string.IsNullOrEmpty(DropDownList3.SelectedItem.Text))
strq2 += " AND [Media]=@Media";
if(!string.IsNullOrEmpty(DropDownList4.SelectedItem.Text))
strq2 += " AND [Publication]=@Publication";
if(!string.IsNullOrEmpty(DropDownList5.SelectedItem.Text))
strq2 += " AND [Genre]=@Genre";
if(!string.IsNullOrEmpty(DropDownList6.SelectedItem.Value))
strq2 += " AND [Month]=@Month";
if(!string.IsNullOrEmpty(DropDownList7.SelectedItem.Value))
strq2 += " AND [Section]=@Section";
于 2013-05-17T15:26:21.627 に答える
0

おそらく選択クエリを次のようにフォーマットできます-

select * from tbl_DR_data 
where 
ISNULL( [YEAR 1], 'X') = ISNULL( DropDownList1.SelectedItem.Text, 'X') 
AND  ISNULL( Product, 'X') = ISNULL( DropDownList2.SelectedItem.Text , 'X')
AND ... so on.

そうすれば、値が選択されていない場合、wher 句のその部分は常に true になります。

于 2013-05-17T15:02:21.160 に答える