【发布时间】:2014-06-22 10:33:10
【问题描述】:
我有一个从 Sql 中返回 LoginStatus 的方法。存储过程是问题的底部。
在运行时,我只能从 DataSet 中获取 [2] 处的 Column。行数始终为 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
【问题讨论】:
-
你怎么知道数据存储在
Tables[2],而不是Tables[1]或Tables[10]?Rows.Count.ToString()怎么可能等于“In”? -
我在数据库中有 3 列。第三列是我想要的。对不起,不考虑条件。我把它弄错了。让我更新一下。
标签: c# sql datatable dataset datareader