asp.netアプリで問題が発生しました。このアプリでは、WHERE句を使用してSQLクエリを動的に構築し、入力されたフィールドに応じてORを追加しています。これがシナリオです。
私は4つのテキストボックスを持っています。2つのうちの1つはDateTimeです。
1つのテキストボックスに値があるかどうかをデータベースで検索し、GridViewにバインドされた結果を返したいと思います。ここで、複数のテキストボックス値がある場合は、それも追加して、where句にORを作成する必要があります。テキストボックスのいずれにも値がない場合は、すべての結果を返す必要があります。しかし、値またはnullがあるかどうかを確認するために、if elseループを実行する必要があるため、クエリの作成に問題があります。これが私のコードです。
StringBuilder selectQuery = new StringBuilder();
disCode = SearchTextCouponCode.Text;
disName = SearchTextCouponName.Text;
if(StartDate.SelectedDate != null)
startDate = StartDate.SelectedDate.ToString("yyyy-MM-dd");
if(EndDate.SelectedDate != null)
endDate = EndDate.SelectedDate.ToString("yyyy-MM-dd");
// here is the main thing where i am getting the error
if (!string.IsNullOrEmpty(disCode))
{
selectQuery.Append("DISCOUNTCode = '" + disCode + "'");
}
if (!string.IsNullOrEmpty(disName))
{
selectQuery.Append(" OR DISCOUNTName = '" + disName + "'");
}
if (startDate != "0001-01-01")
{
selectQuery.Append(" OR StartDate = '" + startDate + "'");
}
if(endDate != "0001-01-01")
selectQuery.Append(" OR EndDate = '" + endDate + "'");
// I am using Object Data Source and the method i am passing is taking care of the SQL injection
DataSourceDis.SelectParameters["sqlCriteria"].DefaultValue = selectQuery.ToString();
GridDis.DataBind();
ここで、アプリを実行し、disCodeテキストボックスを空のままにすると、クエリはORで始まり、構文が正しくないというエラーが表示されます。
助けてください。
////////////////////////////////////////////////// ///////
SQLインジェクションを処理するこのクエリを作成した後、別のメソッドを呼び出しています
////////////////////////////////////////////////// ///////