将查询结果分配到会话中

时间:2017-02-06 06:17:38

标签: c# asp.net sql-server

我想将结果分配到会话中

c#c​​ode

       protected void BindData()
{
    SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-677TN4G\SQLEXPRESS;Initial Catalog=homework;Persist Security Info=True;User ID=sa;Password=123456");

    DataSet ds = new DataSet();
    DataTable FromTable = new DataTable();
    con.Open();
    string cmdstr = "Select CourseName from Staff where FacultyNumber=@idd";
    SqlCommand cmd = new SqlCommand(cmdstr, con);
    cmd.Parameters.AddWithValue("@idd", Session["id"].ToString());
    SqlDataAdapter adp = new SqlDataAdapter(cmd);
    adp.Fill(ds);   
    DataList1.DataSource = ds.Tables[0];
    DataList1.DataBind();

}

所以我怎样才能做到这一点

        Session["id"] = cmdstr.Text;

但不起作用

我是这样做但不能正常工作

我这样做

       protected void BindData()
{
    SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-677TN4G\SQLEXPRESS;Initial Catalog=homework;Persist Security Info=True;User ID=sa;Password=123456");

    DataSet ds = new DataSet();
    DataTable FromTable = new DataTable();
    con.Open();
    string cmdstr = "Select CourseName from Staff where FacultyNumber=@idd";

    SqlCommand cmd = new SqlCommand(cmdstr, con);
    cmd.Parameters.AddWithValue("@idd", Session["id"].ToString());
    SqlDataAdapter adp = new SqlDataAdapter(cmd);
    adp.Fill(ds);   
    DataList1.DataSource = ds.Tables[0];
    Session.Add("Staff", ds.Tables[0]);
    DataList1.DataBind();
    Label1.Visible = true;
    Label1.Text = "Course Name is : " + Session["Staff"].ToString();

}

,输出

  

课程名称是:表

不是选定的值

1 个答案:

答案 0 :(得分:0)

在您的情况下,结果是DataTable没问题,您也可以将此DataTable存储到会话中。让staffData成为您从数据库中填充的DataTable

Session.Add("Staff", staffData);  // Adding datatable to the session 

在您使用的情况下,ds用作DataSet,您正在访问ds.Tables[0]以绑定网格。在这种情况下,您可以使用以下内容:Session.Add("Staff", ds.Tables[0]);

稍后您可能会提出另一个问题,即我如何从会话中检索此DataTable,我也在这里添加答案。

DataList1.DataSource = (DataTable)Session["Staff"];