如何使用SQL计数功能

时间:2018-05-08 18:47:08

标签: c# asp.net

我想在文本框中显示计数

protected void PresentCalculator()
{
    string cur_month = "May";

    SqlDataAdapter da = new SqlDataAdapter("SELECT COUNT(EMP_CODE) FROM 
Attendance where Month ='" + cur_month + "' and EMP_CODE='" + 2222 + "' ", 
con);
    DataTable dt = new DataTable();
    da.Fill(dt);

    if (dt.Rows.Count > 0)
    {
        txtPresentDay.Text = Convert.ToString(count);
    }
}

1 个答案:

答案 0 :(得分:4)

而不是SqlDataAdapter使用SqlCommand https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand(v=vs.110).aspx

并致电ExecuteScalar获取价值 https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.110).aspx

像这样:

using(var sqlCon = new SqlConnetion())
{
    using(var sqlCommand = sqlCon.CreateCommand())
    {
        sqlCommand.CommandText = "SELECT COUNT(EMP_CODE) FROM Attendance WHERE Month = @curMonth AND EMP_CODE= @empCode";
        command.Parameters.Add("@curMonth", SqlDbType.Int).Value = curMonth;
        command.Parameters.Add("@empCode", SqlDbType.Int).Value = 2222;

        var count = (int)sqlCommand.ExecuteScalar();
        txtPresentDay.Text = Convert.ToString(count);
    }
}

我对你的数据库和你的要求知之甚少,但这里有一点警告:你只是要求这个月,确保这真的是你想要的。

因此,如果是2017/5/1,2016 / 5 / 1,1997 / 5/1,则会计入出勤率 - 因为月份总是相同但年份会发生变化。