繁体   English   中英

如何在C#中编写IF SQL语句以从数据库中检索值

[英]How to write IF SQL statement in C# for retrieving values from database

我在UI中有这三列。 在下拉菜单中,我有一个AllRecords和其他字段。 我选择“ AllRecords字段,然后输入开始和结束日期的详细信息。

现在,我为此查询编写了一个检索值的查询。

当他选择AllRecords (取决于开始日期和结束日期),它必须显示或检索数据库表中的数据。

我写了一个查询,如果用户将选择其他值,它看起来像这样,

DataTable dt = new DataTable();
string queryStr = "SELECT Day,Date,Name,Task,Hours from TaskManualDetails where Date between '"
    + DateTime.Parse(txtStartDate.Text).ToString("yyyy-MM-dd")
    + "' and '"
    + DateTime.Parse(txtEndDate.Text).ToString("yyyy-MM-dd")
    + "' and Name ='"
    + DropDownList1.Text.ToString()
    + "'";
SqlDataAdapter s1 = new SqlDataAdapter(queryStr, conn);
s1.Fill(dt);

现在的问题是我必须为AllRecords编写查询。

尝试这个:

 DataTable dt = new DataTable();
            string queryStr = "SELECT Day,Date,Name,Task,Hours from TaskManualDetails ";

            if ( DropDownList1.Text.ToString() != "AllRecords")
            queryStr=queryStr+" where Date between '" + DateTime.Parse(txtStartDate.Text).ToString("yyyy-MM-dd") + "' and '" + DateTime.Parse(txtEndDate.Text).ToString("yyyy-MM-dd")  + "'"+" and Name ='" + DropDownList1.Text.ToString() + "'";
            SqlDataAdapter s1 = new SqlDataAdapter(queryStr, conn);
            s1.Fill(dt);

您的查询只有很小的变化

仅当查询不是AllRecords时,才必须追加Name ='“ + DropDownList1.Text.ToString()到查询

注意SQL注入。 像这样使用SQLParameter:

    DataTable dt = new DataTable();
    SqlDataAdapter s1 = new SqlDataAdapter();
    s1.SelectCommand.Connection = conn;
    string queryStr = "SELECT Day,Date,Name,Task,Hours from TaskManualDetails WHERE Date BETWEEN @StartDate AND @EndDate";
    s1.SelectCommand.Parameters.AddWithValue("StartDate", DateTime.Parse(txtStartDate.Text).ToString("yyyy-MM-dd"));
    s1.SelectCommand.Parameters.AddWithValue("EndDate", DateTime.Parse(txtEndDate.Text).ToString("yyyy-MM-dd"));

    if (DropDownList1.Text.ToString() != "AllRecords")
    {
        queryStr = queryStr + "  AND Name = @Name";
        s1.SelectCommand.Parameters.AddWithValue("Name", DropDownList1.Text.ToString());
    }

    s1.SelectCommand.CommandText = queryStr;

    s1.Fill(dt);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM