在我提出问题之前,请考虑以下情况:我网站上的用户有profileID
。有一些pluginID
与此profileID
相关联。
例如:User1
可能有2个,3个和5个插件与他的个人资料相关联。
当用户登录时,我将用户的profileID
存储在会话变量cod
中。在某个页面上,用户尝试编辑与其个人资料相关联的plugins
。因此,在该页面上,我必须从数据库中检索那些pluginID
。
我已应用此代码,但这只从数据库获取最大pluginID
而不是所有pluginID
。
SqlCommand cmd1 = new SqlCommand("select plugin_id from profiles_plugins where id=(select id from profiles_plugins where profile_id=" + Convert.ToInt32(Session["cod"]) + ")", con);
SqlDataReader dr1 = cmd1.ExecuteReader();
if (dr1.HasRows)
{
while (dr1.Read())
{
Session["edp1"] = Convert.ToInt32(dr1[0]);
}
}
dr1.Close();
cmd1.Dispose();
我试图找出如何在此会话变量中存储多个pluginID
?
由于
答案 0 :(得分:5)
首先将值读取到列表或数组,然后存储列表或数组:
using(SqlCommand cmd1 = new SqlCommand("select plugin_id from profiles_plugins where id=(select id from profiles_plugins where profile_id=" + Convert.ToInt32(Session["cod"]) + ")", con))
{
SqlDataReader dr1 = cmd1.ExecuteReader();
var yourList = new List<int>();
if (dr1.HasRows)
{
while (dr1.Read())
{
yourList.Add(Convert.ToInt32(dr1[0]));
}
}
Session["edp1"] = yourList;
dr1.Close();
}
另外,请阅读Marc Gravell对您问题的评论。
答案 1 :(得分:3)
您可以在会话密钥下存储您喜欢的任何对象,而不仅仅是标量值。因此,只需定义一个包含您要存储的所有值的自定义类型,创建此类型的实例并将其放入会话中。