0

下午好,用户应该能够同时按日期和文本搜索,我如何在一个文本框中同时进行搜索?

在此处输入图像描述

protected void BtnWinnersSearch_Click(object sender, EventArgs e)
{
    string searchText = txtWinnersSearch.Text.Replace("'", "''").Trim();
    GridViewWinners.Visible = true;

    SqlDataSource4.FilterExpression = "nickname like '%" + searchText + "%' or username like '%" + searchText +
        "%' or clubnumber like '%" + searchText + "%' or firstname like '%" +
        searchText + "%' or lastname like '%" + searchText +
        "%' or email like '%" + searchText + "%' or dob like '%" + Convert.ToDateTime(searchText).ToString("yyyy-MM-dd") + "%'";
}

引发以下错误:

在此处输入图像描述

在此处输入图像描述

作品!

4

2 回答 2

0

没关系,我明白了。这是答案:

    public static bool IsDate(Object obj)
    {
        string strDate = obj.ToString();
        try
        {
            DateTime dt = DateTime.Parse(strDate);
            if (dt != DateTime.MinValue && dt != DateTime.MaxValue)
                return true;
            return false;
        }
        catch
        {
            return false;
        }
    }

protected void BtnWinnersSearch_Click(object sender, EventArgs e)
    {

        string searchText = txtWinnersSearch.Text.Replace("'", "''").Trim();
        bool isDate = IsDate(searchText);

        GridViewWinners.Visible = true;

        if (isDate == true)
        {
            SqlDataSource4.FilterExpression = "dob" + " ='" + Convert.ToDateTime(searchText).ToString("yyyy-MM-dd") + "'";
        }
        else
        {
            SqlDataSource4.FilterExpression = "nickname like '%" + searchText + "%' or username like '%" + searchText +
                "%' or clubnumber like '%" + searchText + "%' or firstname like '%" +
                searchText + "%' or lastname like '%" + searchText +
                "%' or email like '%" + searchText + "%'";
        }
    }
于 2013-07-18T23:45:42.460 回答
0

你永远不应该这样写 SQL 代码!您的代码极易受到 SQL 注入攻击。

如果 searchText 类似于 "'; truncate table; --" 那么你就死定了。

也没有实用的方法可以通过正则表达式验证来保护自己。您可以提出的任何正则表达式都可以通过任意数量的向量来解决。

严重的是,需要删除此 SQL 代码并用使用正确参数绑定的代码替换。你所拥有的不能用于任何类似于生产环境的东西。

于 2013-07-19T00:07:17.810 回答