从会话中检索字段

时间:2012-10-30 11:26:16

标签: c# asp.net sql-server session-variables

我有一个公司可以注册的表单,在此注册中随机生成用户代码... CompCode与数据库表中的所有其他信息一起保存为主键...

当用户注册时,他们可以登录...当他们成功登录时,他们的compName被保存为会话变量

Session["CompName"] = TextBox1.Text;

现在一旦登录,他们就有机会发布一份工作,这份工作细节保存在另一个名为job的表中......但是为了让工作细节与公司相关,我需要CompID

如何使用会话CompName

检索CompID
 protected void Save_Click(object sender, EventArgs e)
{
    string answer = "NO";
    string strcon = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VC_temps.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
    SqlConnection con = new SqlConnection(strcon);

    SqlCommand com = new SqlCommand("Store-Jobs", con);
    com.CommandType = CommandType.StoredProcedure;
    com.Parameters.AddWithValue("Job", TextBox1.Text);
    com.Parameters.AddWithValue("JobType", DropDownList1.Text);
    com.Parameters.AddWithValue("StartDate", Calendar1.SelectedDate);
    com.Parameters.AddWithValue("Time", TextBox2.Text);
    com.Parameters.AddWithValue("JobID", TextBox1.Text.Substring(3).ToUpper());
    com.Parameters.AddWithValue("CompanyID", ?);
    com.Parameters.AddWithValue("PoistionFilled", answer);
    com.Parameters.AddWithValue("Description", TextBox4.Text);

    con.Open();
    com.ExecuteNonQuery();
    Labelinfo.Text = "Post successful.";
}

3 个答案:

答案 0 :(得分:1)

如果你的意思是你希望得到会话的价值,那你就这样做了

  if(Compname == (string)Session["CompName"])

答案 1 :(得分:1)

在存储过程本身处理它,传递存储在会话中的conmpany名称,如@sleiman jneidi所述。

在存储过程中,首先检索compName = @compName的所有compCode,然后执行其余操作。

答案 2 :(得分:0)

首先我创建了一个数据源,如下所示:

<asp:SqlDataSource ID="SqlDataSource_CompID" runat="server" 
                ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
                SelectCommand="SELECT [CompanyID] FROM [Company] WHERE ([CompName] = @CompName)">
                <SelectParameters>
                    <asp:SessionParameter Name="CompName" SessionField="CompName" Type="String" />
                </SelectParameters>
            </asp:SqlDataSource>

然后我在代码中添加了以下代码

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.getName();
    }
}
private void getName()
{
    DataView dv = (DataView)SqlDataSource_CompID.Select(DataSourceSelectArguments.Empty);
    DataRowView drv = dv[0];

    Session["CompID"] = drv["CompanyID"].ToString();
}

这很有效,它给了我正在寻找的东西,如果有更好的原因,请随意和评论