我的 asp.net 应用程序有问题,我在其中动态构建 SQL 查询,其中我使用 WHERE 子句并根据输入的字段添加 OR。这是场景。
我有一个四个文本框,其中 2 个是 DateTime
我想在数据库中搜索任何一个文本框中是否有值并返回绑定到 GridView 的结果。现在,如果有多个文本框值,那么我也需要添加它并在 where 子句中构建 OR。如果任何一个文本框中没有值,则需要返回所有结果。但是我在构建查询时遇到问题,因为我必须通过 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 开头,并给出错误,即 where ..附近的语法不正确
请帮忙。
///////////////////////////////////////// ///////
我在建立这个负责 SQL 注入的查询后调用另一个方法
///////////////////////////////////////// ///////