0

IDE:Microsoft Visual Studio 2012,DBMS:Microsoft SQL Server 2012

我有 2 个 ASP.NET 网页、一个登录页面和一个主页。我想要做的是在我登录后,它将 ID 保存到会话中,然后使用它从数据库(与 ID 相同的表)中检索用户的名字并进入主页上的标签。我过去可以使用:

SqlDataReader

但现在我有一个数据访问层类,它返回一个:

DataTable

有我的问题。我似乎无法弄清楚该怎么做。到目前为止,我有这些作品:

Session.Add("StudentID", dt);

那是登录页面。这是主页:

DataTable dt = (DataTable)Session["StudentUser"];
int ID = int.Parse(Session["StudentID"].ToString());
DAL.GetData("SELECT Fname FROM StudentUser WHERE StudentID = " + ID);
lblName.Text = dt["Fname"].ToString();

至于我的 DAL 代码,它们是:

public static DataTable GetData(string sql)
{
      SqlConnection con = new SqlConnection(DAL.ConnectionString);
      con.Open();
      SqlCommand com = new SqlCommand(sql, con);
      SqlDataAdapter da = new SqlDataAdapter(com);
      DataTable dt = new DataTable();
      da.Fill(dt);
      return dt;
}

我的表被调用StudentUser,我想要的标签上的部分是Fname

使用SqlDataReader(dr) 时,登录代码通常如下所示:

Session.Add("StudentID", dr["StudentID"].ToString());

对于主页:

int ID = int.Parse(Session["StudentID"].ToString());
SqlCommand com = new SqlCommand("SELECT Fname FROM StudentUser WHERE StudentID = " + ID, con);
SqlDataReader dr = com.ExecuteReader();
dr.Read();
lblName.Text = dr["Fname"].ToString();
dr.Close();

SqlDataReader代码有效,但我决心尽可能使用我的数据访问层,即使它导致我使用我不熟悉的代码。请帮助亲爱的人。:)

4

2 回答 2

0

问题是您不能对所有可能性都使用一种方法。在您的示例中,您无法向 dal 发送参数,这意味着您必须在 dal 中为此类事情创建一个方法。

我有一门课或多或少可以做你想要的。它不是一个合适的存储库,但对于初学者来说,它可能有你需要的东西。

http://pastebin.com/xYhsSeXW

于 2013-07-04T15:25:51.187 回答
0

你正在调用方法DAL.GetData,但你没有保存DataTable任何地方..,你为什么不试试这个:

DataTable dt1 = DAL.GetData("SELECT Fname FROM StudentUser WHERE StudentID = " + ID);
lblName.Text = dt1["Fname"].ToString();

代替:

DAL.GetData("SELECT Fname FROM StudentUser WHERE StudentID = " + ID);
lblName.Text = dt["Fname"].ToString();

您需要存储从您创建的方法返回的值,否则调用该方法没有任何意义。

于 2013-07-04T15:40:15.603 回答