C# SQL Count()函数。和设置变量

C# SQL Count()函数。和设置变量,c#,asp.net,sql,C#,Asp.net,Sql,我写了一条SQL语句,我想得到的是用户提交的线程数。所以我声明了一个smallint变量。但是我不确定我的sql语句的语法。我想看看结果。QA int属性应接收该计数编号。使用选择而不是设置根据查询分配变量: public void GetUsersDetails(Guid i) { StringBuilder sb = new StringBuilder(); sb.Append("DECLARE @NumberOfThreadsByOneUser smallint;"

我写了一条SQL语句,我想得到的是用户提交的线程数。所以我声明了一个smallint变量。但是我不确定我的sql语句的语法。我想看看结果。QA int属性应接收该计数编号。

使用
选择
而不是
设置
根据查询分配变量:

    public void GetUsersDetails(Guid i)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("DECLARE @NumberOfThreadsByOneUser smallint;");
    sb.Append(" SET=(SELECT COUNT(t.threadID)");
    sb.Append(" FROM Threads AS t");
    sb.Append(" INNER JOIN Users AS u ON u.UsersID=t.UsersID");
    sb.Append(" WHERE u.UsersID=@UserID)");

    string myConnectionString = AllQuestionsPresented.connectionString;
    using (SqlConnection conn = new SqlConnection())
    {
        SqlCommand cmd = new SqlCommand(sb.ToString(), conn);
        cmd.Parameters.Add("UserID", SqlDbType.UniqueIdentifier).Value = i;
        SqlDataReader dr = cmd.ExecuteReader();


 dr.Read();
     QA = (Int32.TryParse(dr["NumberOfThreadsByOneUser"].ToString(), out result3)) ? int.Parse(dr["Replies"].ToString()) : 0;
    }
}
要使用输出变量,请不要在SQL中声明它,而是传递它:

sb.Append(" SELECT @NumberOfThreadsByOneUser = (SELECT COUNT(t.threadID)");
然后,在执行命令后,可以检索该命令:

cmd.Parameters.Add("@NumberOfThreadsByOneUser").ParameterDirection = 
    ParameterDirection.InputOutput;

或者,使用reader方法,不要在SQL中声明变量,也不要将其作为参数传递

var result = cmd.Parameters("@NumberOfThreadsByOneUser").Value
或:

var read=cmd.ExecuteReader();

read.read();// 使用
select
而不是
set
根据查询分配变量:

    public void GetUsersDetails(Guid i)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("DECLARE @NumberOfThreadsByOneUser smallint;");
    sb.Append(" SET=(SELECT COUNT(t.threadID)");
    sb.Append(" FROM Threads AS t");
    sb.Append(" INNER JOIN Users AS u ON u.UsersID=t.UsersID");
    sb.Append(" WHERE u.UsersID=@UserID)");

    string myConnectionString = AllQuestionsPresented.connectionString;
    using (SqlConnection conn = new SqlConnection())
    {
        SqlCommand cmd = new SqlCommand(sb.ToString(), conn);
        cmd.Parameters.Add("UserID", SqlDbType.UniqueIdentifier).Value = i;
        SqlDataReader dr = cmd.ExecuteReader();


 dr.Read();
     QA = (Int32.TryParse(dr["NumberOfThreadsByOneUser"].ToString(), out result3)) ? int.Parse(dr["Replies"].ToString()) : 0;
    }
}
要使用输出变量,请不要在SQL中声明它,而是传递它:

sb.Append(" SELECT @NumberOfThreadsByOneUser = (SELECT COUNT(t.threadID)");
然后,在执行命令后,可以检索该命令:

cmd.Parameters.Add("@NumberOfThreadsByOneUser").ParameterDirection = 
    ParameterDirection.InputOutput;

或者,使用reader方法,不要在SQL中声明变量,也不要将其作为参数传递

var result = cmd.Parameters("@NumberOfThreadsByOneUser").Value
或:

var read=cmd.ExecuteReader();
read.read()//