C# 获取数据集中的行计数为零

C# 获取数据集中的行计数为零,c#,sql,datatable,dataset,datareader,C#,Sql,Datatable,Dataset,Datareader,我有一个从Sql返回LoginStatus的方法。存储过程位于问题的底部 在运行时,我只能从DataSet获取[2]处的列。行计数始终为0 DataSet logStatusDs = new DataSet(); protected void Page_Load(object sender, EventArgs e) { GetLoginStatus(Convert.ToInt32(Session["userid"])); string aa = logStatusDs.Ta

我有一个从Sql返回LoginStatus的方法。存储过程位于问题的底部

在运行时,我只能从DataSet获取[2]处的列。行计数始终为0

DataSet logStatusDs = new DataSet();

protected void Page_Load(object sender, EventArgs e)
{
    GetLoginStatus(Convert.ToInt32(Session["userid"]));

    string aa = logStatusDs.Tables[2].Rows.Count.ToString();

   // if (aa == "In")
   // {
   //    btnCheckout.Visible = true;
   // }
   //else
   // {
   //    btnCheckIn.Visible = true;
   // } 
}

public DataSet GetLoginStatus(Int32 userId)
{
    //DataSet logStatusDs = new DataSet();
    //load the List one time to be used thru out the intire application
    var ConnString = System.Configuration.ConfigurationManager.ConnectionStrings["EMSJConnectionString"].ConnectionString;

    using (SqlConnection connStr = new SqlConnection(ConnString))
    {
        using (SqlCommand cmd = new SqlCommand("get_LoginStatusQ", connStr))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@UserId", Session["userid"]);
            cmd.Connection.Open();
            new SqlDataAdapter(cmd).Fill(logStatusDs);
        }
    }

    return logStatusDs;
}
使用的存储过程:

alter PROCEDURE [dbo].[get_LoginStatusQ]  
@UserId int
AS   
BEGIN  
  SET NOCOUNT ON;

  SELECT TOP 1 UserTimeId, LoginStatus 
  FROM UserTime 
  WHERE UserId = 2 
  ORDER BY UserTimeId DESC
END
试试这个

alter PROCEDURE [dbo].[get_LoginStatusQ]  
@UserId int
AS   
BEGIN  
  SET NOCOUNT ON;

  SELECT TOP 1 UserTimeId, LoginStatus 
  FROM UserTime 
  WHERE UserId = @UserId  
  ORDER BY UserTimeId DESC
END

您如何知道数据存储在表[2]中,而不是表[1]或表[10]中?Rows.Count.ToString怎么可能在中相等呢?数据库中有3列。第三栏是我想要的。对不起,不考虑条件,我错了。让我更新一下。